From 71f6a1eeee412045cc08ce8894194573362cb8f0 Mon Sep 17 00:00:00 2001 From: adamw Date: Thu, 31 Aug 2017 14:32:01 +0200 Subject: Response.body is now an Either[String, T], to handle cases when the status code isn't 2xx --- .../asynchttpclient/monix/AsyncHttpClientMonixHandler.scala | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'async-http-client-handler/monix/src/main') diff --git a/async-http-client-handler/monix/src/main/scala/com/softwaremill/sttp/asynchttpclient/monix/AsyncHttpClientMonixHandler.scala b/async-http-client-handler/monix/src/main/scala/com/softwaremill/sttp/asynchttpclient/monix/AsyncHttpClientMonixHandler.scala index 7f01f0c..1ef3973 100644 --- a/async-http-client-handler/monix/src/main/scala/com/softwaremill/sttp/asynchttpclient/monix/AsyncHttpClientMonixHandler.scala +++ b/async-http-client-handler/monix/src/main/scala/com/softwaremill/sttp/asynchttpclient/monix/AsyncHttpClientMonixHandler.scala @@ -2,7 +2,7 @@ package com.softwaremill.sttp.asynchttpclient.monix import java.nio.ByteBuffer -import com.softwaremill.sttp.{MonadAsyncError, SttpHandler} +import com.softwaremill.sttp.{MonadAsyncError, SttpHandler, Utf8, concatByteBuffers} import com.softwaremill.sttp.asynchttpclient.AsyncHttpClientHandler import monix.eval.Task import monix.execution.{Cancelable, Scheduler} @@ -31,6 +31,16 @@ class AsyncHttpClientMonixHandler private ( override protected def publisherToStreamBody( p: Publisher[ByteBuffer]): Observable[ByteBuffer] = Observable.fromReactivePublisher(p) + + override protected def publisherToString( + p: Publisher[ByteBuffer]): Task[String] = { + + val bytes = Observable + .fromReactivePublisher(p) + .foldLeftL(ByteBuffer.allocate(0))(concatByteBuffers) + + bytes.map(bb => new String(bb.array(), Utf8)) + } } object AsyncHttpClientMonixHandler { -- cgit v1.2.3