Alex Rivera | Logout

Scala - URL with Query String Parser and Builder DSL

Asked 2012-11-19T22:23:50.010
18

In Scala how do I build up a URL with query string parameters programmatically?

Also how can I parse a String containing a URL with query string parameters into a structure that allows me to edit the query string parameters programmatically?

Edit
Report

1 Answer

4

Theon's library looks pretty nice. But if you just want a quickie encode method, I have this one. It deals with optional parameters, and also will recognize JsValues from spray-json and compact print them before encoding. (Those happen to be the two things I have to worry about, but you could easily extend the match block for other cases you want to give special handling to)

import java.net.URLEncoder
def buildEncodedQueryString(params: Map[String, Any]): String = {
  val encoded = for {
    (name, value) <- params if value != None
    encodedValue = value match {
      case Some(x:JsValue) => URLEncoder.encode(x.compactPrint, "UTF8")
      case x:JsValue       => URLEncoder.encode(x.compactPrint, "UTF8")
      case Some(x)         => URLEncoder.encode(x.toString, "UTF8")
      case x               => URLEncoder.encode(x.toString, "UTF8")
    }
  } yield name + "=" + encodedValue

  encoded.mkString("?", "&", "")
}
answered 2013-05-02T23:29:16.923

Your Answer