aboutsummaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authoradamw <adam@warski.org>2017-07-08 21:27:52 +0200
committeradamw <adam@warski.org>2017-07-08 21:27:52 +0200
commit0863a2af75583b976aee3171585685b2524d0874 (patch)
treeee5d08849bfb78268715743b67caf3c3c223c50f /core/src
parent8f03e817d315cda846136f04e85febf7022a1dc2 (diff)
downloadsttp-0863a2af75583b976aee3171585685b2524d0874.tar.gz
sttp-0863a2af75583b976aee3171585685b2524d0874.tar.bz2
sttp-0863a2af75583b976aee3171585685b2524d0874.zip
Simple URI tests
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala32
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/package.scala4
2 files changed, 20 insertions, 16 deletions
diff --git a/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala b/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala
index abb2327..e329630 100644
--- a/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala
@@ -1,6 +1,8 @@
package com.softwaremill.sttp
-// from https://gist.github.com/teigen/5865923
+import java.net.URI
+
+// based on https://gist.github.com/teigen/5865923
object UriInterpolator {
private val unreserved = {
@@ -9,24 +11,22 @@ object UriInterpolator {
alphanum ++ mark
}
- implicit class UriContext(val sc:StringContext) extends AnyVal {
- def uri(args:String*) = {
- val strings = sc.parts.iterator
- val expressions = args.iterator
- val sb = new StringBuffer(strings.next())
+ def interpolate(sc: StringContext, args: String*): URI = {
+ val strings = sc.parts.iterator
+ val expressions = args.iterator
+ val sb = new StringBuffer(strings.next())
- while(strings.hasNext){
- for(c <- expressions.next()){
- if(unreserved(c))
- sb.append(c)
- else for(b <- c.toString.getBytes("UTF-8")){
- sb.append("%")
- sb.append("%02X".format(b))
- }
+ while(strings.hasNext){
+ for(c <- expressions.next()){
+ if(unreserved(c))
+ sb.append(c)
+ else for(b <- c.toString.getBytes("UTF-8")){
+ sb.append("%")
+ sb.append("%02X".format(b))
}
- sb.append(strings.next())
}
- sb.toString
+ sb.append(strings.next())
}
+ new URI(sb.toString)
}
}
diff --git a/core/src/main/scala/com/softwaremill/sttp/package.scala b/core/src/main/scala/com/softwaremill/sttp/package.scala
index 52d06f0..3321aa7 100644
--- a/core/src/main/scala/com/softwaremill/sttp/package.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/package.scala
@@ -178,4 +178,8 @@ package object sttp {
private val MultipartFormDataContentType = "multipart/form-data"
private def contentTypeWithEncoding(ct: String, enc: String) = s"$ct; charset=$enc"
+
+ implicit class UriContext(val sc: StringContext) extends AnyVal {
+ def uri(args:String*): URI = UriInterpolator.interpolate(sc, args: _*)
+ }
}