aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorn4to4 <n4to4k@gmail.com>2018-04-24 18:19:50 +0900
committern4to4 <n4to4k@gmail.com>2018-04-24 18:23:21 +0900
commit4e0ab8d83a92a07b40d85ff9ce5a6c9278b88b88 (patch)
tree980088d603d85e491bc1543894ed0fec8ff171f4
parent9406043b822a3aa9a7ef27630036a91cc3e7ed3a (diff)
downloadsttp-4e0ab8d83a92a07b40d85ff9ce5a6c9278b88b88.tar.gz
sttp-4e0ab8d83a92a07b40d85ff9ce5a6c9278b88b88.tar.bz2
sttp-4e0ab8d83a92a07b40d85ff9ce5a6c9278b88b88.zip
Set `followRedirects` explicitly, and disable redirects if `maxRedirects <= 0`
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/RequestT.scala5
-rw-r--r--tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala7
2 files changed, 11 insertions, 1 deletions
diff --git a/core/src/main/scala/com/softwaremill/sttp/RequestT.scala b/core/src/main/scala/com/softwaremill/sttp/RequestT.scala
index 7b3eab9..082a75a 100644
--- a/core/src/main/scala/com/softwaremill/sttp/RequestT.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/RequestT.scala
@@ -230,7 +230,10 @@ case class RequestT[U[_], T, +S](
this.copy(options = options.copy(followRedirects = fr))
def maxRedirects(n: Int): RequestT[U, T, S] =
- this.copy(options = options.copy(maxRedirects = n))
+ if (n <= 0)
+ this.copy(options = options.copy(followRedirects = false))
+ else
+ this.copy(options = options.copy(followRedirects = true, maxRedirects = n))
def tag(k: String, v: Any): RequestT[U, T, S] =
this.copy(tags = tags + (k -> v))
diff --git a/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala b/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala
index 4138fe2..392f6d8 100644
--- a/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala
+++ b/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala
@@ -638,6 +638,13 @@ class BasicTests
resp.code should be(0)
resp.history should have size (maxRedirects)
}
+
+ name should "not redirect when maxRedirects is less than or equal to 0" in {
+ val resp = loop.maxRedirects(-1).send().force()
+ resp.code should be(302)
+ resp.body should be('left)
+ resp.history should be('empty)
+ }
}
def timeoutTests(): Unit = {