aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--akka-http-handler/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpSttpHandler.scala3
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/HttpConnectionSttpHandler.scala10
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/SttpHandler.scala4
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/model/package.scala8
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/package.scala12
-rw-r--r--tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala3
6 files changed, 20 insertions, 20 deletions
diff --git a/akka-http-handler/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpSttpHandler.scala b/akka-http-handler/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpSttpHandler.scala
index 7331065..78d6637 100644
--- a/akka-http-handler/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpSttpHandler.scala
+++ b/akka-http-handler/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpSttpHandler.scala
@@ -14,8 +14,7 @@ import com.softwaremill.sttp.model._
import scala.concurrent.Future
-class AkkaHttpSttpHandler(actorSystem: ActorSystem)
- extends SttpHandler[Future, Source[ByteString, Any], ResponseAs] {
+class AkkaHttpSttpHandler(actorSystem: ActorSystem) extends SttpHandler[Future, Source[ByteString, Any]] {
def this() = this(ActorSystem("sttp"))
diff --git a/core/src/main/scala/com/softwaremill/sttp/HttpConnectionSttpHandler.scala b/core/src/main/scala/com/softwaremill/sttp/HttpConnectionSttpHandler.scala
index 1ca2f77..8d14907 100644
--- a/core/src/main/scala/com/softwaremill/sttp/HttpConnectionSttpHandler.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/HttpConnectionSttpHandler.scala
@@ -10,8 +10,8 @@ import com.softwaremill.sttp.model._
import scala.annotation.tailrec
import scala.io.Source
-object HttpConnectionSttpHandler extends SttpHandler[Id, Nothing, ResponseAsBasic] {
- override def send[T](r: Request, responseAs: ResponseAsBasic[T, Nothing]): Response[T] = {
+object HttpConnectionSttpHandler extends SttpHandler[Id, Nothing] {
+ override def send[T](r: Request, responseAs: ResponseAs[T, Nothing]): Response[T] = {
val c = r.uri.toURL.openConnection().asInstanceOf[HttpURLConnection]
c.setRequestMethod(r.method.m)
r.headers.foreach { case (k, v) => c.setRequestProperty(k, v) }
@@ -68,7 +68,7 @@ object HttpConnectionSttpHandler extends SttpHandler[Id, Nothing, ResponseAsBasi
}
}
- private def readResponse[T](is: InputStream, responseAs: ResponseAsBasic[T, Nothing]): T = responseAs match {
+ private def readResponse[T](is: InputStream, responseAs: ResponseAs[T, Nothing]): T = responseAs match {
case IgnoreResponse =>
@tailrec def consume(): Unit = if (is.read() != -1) consume()
consume()
@@ -93,5 +93,9 @@ object HttpConnectionSttpHandler extends SttpHandler[Id, Nothing, ResponseAsBasi
transfer()
os.toByteArray
+
+ case ResponseAsStream() =>
+ // only possible when the user requests the response as a stream of Nothing. Oh well ...
+ throw new IllegalStateException()
}
}
diff --git a/core/src/main/scala/com/softwaremill/sttp/SttpHandler.scala b/core/src/main/scala/com/softwaremill/sttp/SttpHandler.scala
index 500e889..a0a039e 100644
--- a/core/src/main/scala/com/softwaremill/sttp/SttpHandler.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/SttpHandler.scala
@@ -4,6 +4,6 @@ import com.softwaremill.sttp.model.ResponseAs
import scala.language.higherKinds
-trait SttpHandler[R[_], -S, -AcceptsResponseAs[x, +s] <: ResponseAs[x, s]] {
- def send[T](request: Request, responseAs: AcceptsResponseAs[T, S]): R[Response[T]]
+trait SttpHandler[R[_], -S] {
+ def send[T](request: Request, responseAs: ResponseAs[T, S]): R[Response[T]]
}
diff --git a/core/src/main/scala/com/softwaremill/sttp/model/package.scala b/core/src/main/scala/com/softwaremill/sttp/model/package.scala
index 784b72c..2b01e83 100644
--- a/core/src/main/scala/com/softwaremill/sttp/model/package.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/model/package.scala
@@ -44,11 +44,9 @@ package object model {
*/
sealed trait ResponseAs[T, +S]
- sealed trait ResponseAsBasic[T, +S] extends ResponseAs[T, S]
- object IgnoreResponse extends ResponseAsBasic[Unit, Nothing]
- case class ResponseAsString(encoding: String) extends ResponseAsBasic[String, Nothing]
- object ResponseAsByteArray extends ResponseAsBasic[Array[Byte], Nothing]
+ object IgnoreResponse extends ResponseAs[Unit, Nothing]
+ case class ResponseAsString(encoding: String) extends ResponseAs[String, Nothing]
+ object ResponseAsByteArray extends ResponseAs[Array[Byte], Nothing]
// response as params
-
case class ResponseAsStream[T, S]()(implicit val responseIsStream: S =:= T) extends ResponseAs[T, S]
}
diff --git a/core/src/main/scala/com/softwaremill/sttp/package.scala b/core/src/main/scala/com/softwaremill/sttp/package.scala
index 8410685..1122f2e 100644
--- a/core/src/main/scala/com/softwaremill/sttp/package.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/package.scala
@@ -15,13 +15,13 @@ package object sttp {
type Id[X] = X
type Empty[X] = None.type
- def ignoreResponse: ResponseAsBasic[Unit, Nothing] = IgnoreResponse
+ def ignoreResponse: ResponseAs[Unit, Nothing] = IgnoreResponse
/**
* Uses `utf-8` encoding.
*/
- def responseAsString: ResponseAsBasic[String, Nothing] = responseAsString(Utf8)
- def responseAsString(encoding: String): ResponseAsBasic[String, Nothing] = ResponseAsString(encoding)
- def responseAsByteArray: ResponseAsBasic[Array[Byte], Nothing] = ResponseAsByteArray
+ def responseAsString: ResponseAs[String, Nothing] = responseAsString(Utf8)
+ def responseAsString(encoding: String): ResponseAs[String, Nothing] = ResponseAsString(encoding)
+ def responseAsByteArray: ResponseAs[Array[Byte], Nothing] = ResponseAsByteArray
def responseAsStream[S]: ResponseAs[S, S] = ResponseAsStream[S, S]()
/**
@@ -150,8 +150,8 @@ package object sttp {
* to consume it. An exception to this are streaming responses, which need to fully consumed
* by the client if such a response type is requested.
*/
- def send[R[_], S, T, TypeOfResponseAs[x, +s] <: ResponseAs[x, s]](responseAs: TypeOfResponseAs[T, S])(
- implicit handler: SttpHandler[R, S, TypeOfResponseAs], isRequest: IsRequest[U]): R[Response[T]] = {
+ def send[R[_], S, T](responseAs: ResponseAs[T, S])(
+ implicit handler: SttpHandler[R, S], isRequest: IsRequest[U]): R[Response[T]] = {
handler.send(this, responseAs)
}
diff --git a/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala b/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala
index 0f8fbf6..0f0f076 100644
--- a/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala
+++ b/tests/src/test/scala/com/softwaremill/sttp/BasicTests.scala
@@ -7,7 +7,6 @@ import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.server.Directives._
import com.softwaremill.sttp.akkahttp.AkkaHttpSttpHandler
-import com.softwaremill.sttp.model.ResponseAsBasic
import com.typesafe.scalalogging.StrictLogging
import org.scalatest.concurrent.{IntegrationPatience, ScalaFutures}
import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers}
@@ -59,7 +58,7 @@ class BasicTests extends FlatSpec with Matchers with BeforeAndAfterAll with Scal
override def force[T](wrapped: Future[T]): T = wrapped.futureValue
})
- def runTests[R[_]](name: String, handler: SttpHandler[R, Nothing, ResponseAsBasic], forceResponse: ForceWrappedValue[R]): Unit = {
+ def runTests[R[_]](name: String, handler: SttpHandler[R, Nothing], forceResponse: ForceWrappedValue[R]): Unit = {
implicit val h = handler
name should "make a get request with parameters" in {