aboutsummaryrefslogblamecommitdiff
path: root/tests/src/test/scala/com/softwaremill/sttp/streaming/AsyncHttpClientFs2StreamingTests.scala
blob: 8959cccedde8889fd0f8a07975cd1544e88ce10e (plain) (tree)
1
2
3
4
5
6
7
8
9




                                       

                                        
                                                                          
                                                            

                                                                                      
 
                                                                                                 
 

                                                                          
 
                                                                                    







                                                                            

                 

 
package com.softwaremill.sttp.streaming

import java.nio.ByteBuffer

import cats.effect._
import cats.instances.string._
import com.softwaremill.sttp.SttpBackend
import com.softwaremill.sttp.asynchttpclient.fs2.AsyncHttpClientFs2Backend
import com.softwaremill.sttp.impl.cats.convertCatsIOToFuture
import com.softwaremill.sttp.testing.streaming.{ConvertToFuture, TestStreamingBackend}
import fs2.{Chunk, Stream, text}

class AsyncHttpClientFs2StreamingTests extends TestStreamingBackend[IO, Stream[IO, ByteBuffer]] {

  override implicit val backend: SttpBackend[IO, Stream[IO, ByteBuffer]] =
    AsyncHttpClientFs2Backend[IO]()

  override implicit val convertToFuture: ConvertToFuture[IO] = convertCatsIOToFuture

  override def bodyProducer(body: String): Stream[IO, ByteBuffer] =
    Stream.emits(body.getBytes("utf-8").map(b => ByteBuffer.wrap(Array(b))))

  override def bodyConsumer(stream: Stream[IO, ByteBuffer]): IO[String] =
    stream
      .map(bb => Chunk.array(bb.array))
      .through(text.utf8DecodeC)
      .compile
      .foldMonoid

}