Как создать ZStream из строки из ZStream из байта
Мне нужно прочитать файл с http. Я использую sttp с ZioBackend следующим образом:
val sttpBackend: SttpBackend[Task, ZioStreams] = ???
val request =
basicRequest
.post(uri"...")
.response(asStreamUnsafe(ZioStreams))
.readTimeout(Duration.Inf)
val response: ZIO[
Any,
Throwable,
Response[Either[String, Stream[Throwable, Byte]]]
] = sttpBackend.send(request)
Как перейти отStream[Throwable, Byte]
кStream[Throwable, String]
в котором каждая строка будет строкой из тела ответа?
1 ответ
Путь к использованиюZTransducer
в zio1.x:
def decodeLines: ZTransducer[Any, Nothing, Byte, String] =
ZTransducer.utf8Decode >>> ZTransducer.splitLines
stream.transduce(decodeLines)
Или в zio2.x черезZPipeline
:
stream.via(ZPipeline.utf8Decode >>> ZPipeline.splitLines)