akkaMonixSttpBackend
                                
                                 akkaMonixSttpBackend copied to clipboard
                                
                                    akkaMonixSttpBackend copied to clipboard
                            
                            
                            
                        A STTP backend that utilizes Monix Observables and Tasks.
akkaMonixSttpBackend
Introduction:
akkaMonixSttpBackend is a backend for sttp using Akka-HTTP to handle requests, and with Task as the response Monad and Observable as the streaming type. It is a modification of the Akka-HTTP backend provided by sttp, with instances of Futures deferred to Tasks and Akka-Streams Sources converted to Observables.
The motivation behind creating this backend as opposed to using the existing Monix wrapped async-http-client backend is to give an alternative for projects that already have Akka-HTTP as a dependency, removing the need for the async-http-client dependency as well.
Installation:
 Add the following sbt dependency:
"com.fullfacing" %% "sttp-akka-monix-task" % "1.5.0"
Usage:
Usage is identical to the Akka-HTTP backend with only the response type differing:
import akka.util.ByteString
import com.fullfacing.akka.monix.task.backend.AkkaMonixHttpBackend
import sttp.client.{Response, SttpBackend, _}
import monix.eval.Task
import monix.reactive.Observable
implicit val backend: SttpBackend[Task, Observable[ByteString], NothingT] = AkkaMonixHttpBackend()
// To set the request body as a stream:
val observable: Observable[ByteString] = ???
sttp
  .streamBody(observable)
  .post(uri"...")
  .send()
// To receive the response body as a stream:
val response: Task[Response[Observable[ByteString]]] =
  sttp
    .post(uri"...")
    .response(asStream[Observable[ByteString]])
    .send()