aboutsummaryrefslogtreecommitdiff
path: root/async-http-client-handler/future/src/main/scala
diff options
context:
space:
mode:
authoradamw <adam@warski.org>2017-08-03 11:38:23 +0200
committeradamw <adam@warski.org>2017-08-03 11:38:23 +0200
commitc07f98349ac5dc646855d00425a9dc2c3324465e (patch)
tree6f07784a68290b406a3b50a59fac36b83c5df355 /async-http-client-handler/future/src/main/scala
parent90615deb20ce43f09371b10a25628be8d68485d8 (diff)
downloadsttp-c07f98349ac5dc646855d00425a9dc2c3324465e.tar.gz
sttp-c07f98349ac5dc646855d00425a9dc2c3324465e.tar.bz2
sttp-c07f98349ac5dc646855d00425a9dc2c3324465e.zip
Making the response monad a top-level concept, to make it possible to write SttpHandler wrappers.
Diffstat (limited to 'async-http-client-handler/future/src/main/scala')
-rw-r--r--async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala33
1 files changed, 4 insertions, 29 deletions
diff --git a/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala b/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala
index 5d71511..3209e9b 100644
--- a/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala
+++ b/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala
@@ -2,11 +2,8 @@ package com.softwaremill.sttp.asynchttpclient.future
import java.nio.ByteBuffer
-import com.softwaremill.sttp.SttpHandler
-import com.softwaremill.sttp.asynchttpclient.{
- AsyncHttpClientHandler,
- MonadAsyncError
-}
+import com.softwaremill.sttp.asynchttpclient.AsyncHttpClientHandler
+import com.softwaremill.sttp.{FutureMonad, SttpHandler}
import org.asynchttpclient.{
AsyncHttpClient,
AsyncHttpClientConfig,
@@ -14,13 +11,13 @@ import org.asynchttpclient.{
}
import org.reactivestreams.Publisher
-import scala.concurrent.{ExecutionContext, Future, Promise}
+import scala.concurrent.{ExecutionContext, Future}
class FutureAsyncHttpClientHandler private (
asyncHttpClient: AsyncHttpClient,
closeClient: Boolean)(implicit ec: ExecutionContext)
extends AsyncHttpClientHandler[Future, Nothing](asyncHttpClient,
- new FutureMonad(),
+ new FutureMonad,
closeClient) {
override protected def streamBodyToPublisher(
@@ -64,25 +61,3 @@ object FutureAsyncHttpClientHandler {
: SttpHandler[Future, Nothing] =
new FutureAsyncHttpClientHandler(client, closeClient = false)
}
-
-private[future] class FutureMonad(implicit ec: ExecutionContext)
- extends MonadAsyncError[Future] {
- override def unit[T](t: T): Future[T] = Future.successful(t)
-
- override def map[T, T2](fa: Future[T], f: (T) => T2): Future[T2] = fa.map(f)
-
- override def flatMap[T, T2](fa: Future[T], f: (T) => Future[T2]): Future[T2] =
- fa.flatMap(f)
-
- override def async[T](
- register: ((Either[Throwable, T]) => Unit) => Unit): Future[T] = {
- val p = Promise[T]()
- register {
- case Left(t) => p.failure(t)
- case Right(t) => p.success(t)
- }
- p.future
- }
-
- override def error[T](t: Throwable): Future[T] = Future.failed(t)
-}