From 2a6d7a13c410e07d8ce58701f0fae816df3919e0 Mon Sep 17 00:00:00 2001 From: adamw Date: Sat, 25 Nov 2017 10:28:13 +0100 Subject: Properly encode IDN domain names --- core/src/main/scala/com/softwaremill/sttp/Uri.scala | 2 +- core/src/test/scala/com/softwaremill/sttp/UriTests.scala | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/com/softwaremill/sttp/Uri.scala b/core/src/main/scala/com/softwaremill/sttp/Uri.scala index 424fa5a..eebd450 100644 --- a/core/src/main/scala/com/softwaremill/sttp/Uri.scala +++ b/core/src/main/scala/com/softwaremill/sttp/Uri.scala @@ -117,7 +117,7 @@ case class Uri(scheme: String, val schemeS = encode(Rfc3986.Scheme)(scheme) val userInfoS = userInfo.fold("")(encodeUserInfo(_) + "@") - val hostS = encode(Rfc3986.Host)(host) + val hostS = encode(Rfc3986.Host)(java.net.IDN.toASCII(host)) val portS = port.fold("")(":" + _) val pathPrefixS = if (path.isEmpty) "" else "/" val pathS = path.map(encode(Rfc3986.PathSegment)).mkString("/") diff --git a/core/src/test/scala/com/softwaremill/sttp/UriTests.scala b/core/src/test/scala/com/softwaremill/sttp/UriTests.scala index 810856e..3c54fd2 100644 --- a/core/src/test/scala/com/softwaremill/sttp/UriTests.scala +++ b/core/src/test/scala/com/softwaremill/sttp/UriTests.scala @@ -49,7 +49,9 @@ class UriTests extends FunSuite with Matchers { Uri("http", None, "example.com", None, Nil, Nil, Some("f:g/h i")) -> "http://example.com#f:g/h%20i", Uri("http", None, "example.com", None, List("key=value"), Nil, None) -> - "http://example.com/key=value" + "http://example.com/key=value", + Uri("http", "www.mikoĊ‚ak.net") -> + "http://www.xn--mikoak-6db.net" ) for { -- cgit v1.2.3