aboutsummaryrefslogtreecommitdiff
path: root/akka-http-handler
diff options
context:
space:
mode:
authoradamw <adam@warski.org>2017-06-29 22:22:44 +0200
committeradamw <adam@warski.org>2017-06-29 22:22:44 +0200
commit1ca7543ee1ddf9f10ba0bdfce2b34a9f5d713b7c (patch)
tree34c775dc535d15b1bc5af822d8980aedeba50338 /akka-http-handler
parent56644709f4aeb955dd30dc4a6142370cfe16838c (diff)
downloadsttp-1ca7543ee1ddf9f10ba0bdfce2b34a9f5d713b7c.tar.gz
sttp-1ca7543ee1ddf9f10ba0bdfce2b34a9f5d713b7c.tar.bz2
sttp-1ca7543ee1ddf9f10ba0bdfce2b34a9f5d713b7c.zip
sending & receiving a stream
Diffstat (limited to 'akka-http-handler')
-rw-r--r--akka-http-handler/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpSttpHandler.scala13
1 files changed, 12 insertions, 1 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 60d5686..483f0a7 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
@@ -8,6 +8,7 @@ import akka.stream.ActorMaterializer
import akka.stream.scaladsl.Source
import akka.util.ByteString
import com.softwaremill.sttp._
+import com.softwaremill.sttp.model._
import scala.concurrent.Future
@@ -25,7 +26,7 @@ class AkkaHttpSttpHandler(actorSystem: ActorSystem) extends SttpStreamHandler[Fu
}
}
- override def send[T](r: Request, responseAsStream: ResponseAsStream[Source[ByteString, Any]]): Future[Response[Source[ByteString, Any]]] = {
+ override def send(r: Request, responseAsStream: ResponseAsStream[Source[ByteString, Any]]): Future[Response[Source[ByteString, Any]]] = {
requestToAkka(r).flatMap(Http().singleRequest(_)).map { hr =>
val code = hr.status.intValue()
Response(code, hr.entity.dataBytes)
@@ -43,6 +44,16 @@ class AkkaHttpSttpHandler(actorSystem: ActorSystem) extends SttpStreamHandler[Fu
} yield Response(hr.status.intValue(), body)
}
+ override def sendStream(r: Request, contentType: String, stream: Source[ByteString, Any],
+ responseAsStream: ResponseAsStream[Source[ByteString, Any]]): Future[Response[Source[ByteString, Any]]] = {
+
+ for {
+ ar <- requestToAkka(r)
+ ct <- contentTypeToAkka(contentType)
+ hr <- Http().singleRequest(ar.withEntity(HttpEntity(ct, stream)))
+ } yield Response(hr.status.intValue(), hr.entity.dataBytes)
+ }
+
private def convertMethod(m: Method): HttpMethod = m match {
case Method.GET => HttpMethods.GET
case Method.POST => HttpMethods.POST