aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/scala/com
diff options
context:
space:
mode:
authoradamw <adam@warski.org>2017-11-27 12:22:29 +0100
committeradamw <adam@warski.org>2017-11-27 12:22:55 +0100
commit8cf5bdc708a46fa9e842481db54caaf59123e4e6 (patch)
treed55a376b2b27a355e0d9f69377cdcfda2c669616 /core/src/main/scala/com
parentfc07b4ac1c67c9a096fe1d63bf5049eabff8b6c1 (diff)
downloadsttp-8cf5bdc708a46fa9e842481db54caaf59123e4e6.tar.gz
sttp-8cf5bdc708a46fa9e842481db54caaf59123e4e6.tar.bz2
sttp-8cf5bdc708a46fa9e842481db54caaf59123e4e6.zip
Basic validation of a constructed URI
Diffstat (limited to 'core/src/main/scala/com')
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/Uri.scala6
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala2
2 files changed, 7 insertions, 1 deletions
diff --git a/core/src/main/scala/com/softwaremill/sttp/Uri.scala b/core/src/main/scala/com/softwaremill/sttp/Uri.scala
index dac16b8..16936cc 100644
--- a/core/src/main/scala/com/softwaremill/sttp/Uri.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/Uri.scala
@@ -28,6 +28,12 @@ case class Uri(scheme: String,
queryFragments: Seq[QueryFragment],
fragment: Option[String]) {
+ private val AllowedSchemeCharacters = "[a-zA-Z][a-zA-Z0-9+-.]*".r
+
+ require(host.nonEmpty, "Host cannot be empty")
+ require(AllowedSchemeCharacters.unapplySeq(scheme).isDefined,
+ "Scheme can only contain alphanumeric characters, +, - and .")
+
def scheme(s: String): Uri = this.copy(scheme = s)
def userInfo(username: String): Uri =
diff --git a/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala b/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala
index fba3eaa..4bf6986 100644
--- a/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/UriInterpolator.scala
@@ -18,7 +18,7 @@ object UriInterpolator {
UriBuilder.Fragment
)
- val startingUri = Uri("")
+ val startingUri = Uri("-")
val (uri, leftTokens) =
builders.foldLeft((startingUri, tokens)) {