その入力ストリームを http フレームワーク (Finch および Akka Http) に渡すことができるように変換fs2.Stream
したいと思います。java.io.InputStream
が見つかりましたfs2.io.toInputStream
が、これは機能しません (何も出力されません)。
import java.io.{ByteArrayInputStream, InputStream}
import cats.effect.IO
import scala.concurrent.ExecutionContext.Implicits.global
object IOTest {
def main(args: Array[String]): Unit = {
val is: InputStream = new ByteArrayInputStream("test".getBytes)
val stream: fs2.Stream[IO, Byte] = fs2.io.readInputStream(IO(is), 128)
val test: Seq[InputStream] = stream.through(fs2.io.toInputStream).compile.toList.unsafeRunSync()
println(scala.io.Source.fromInputStream(test.head).mkString)
}
}
私が理解している限り、実行時に.unsafeRunSync()
ストリーム全体を消費しているためSeq[InputStream]
、下にある入力ストリームが返されても、すでに消費されています。
fs2.Stream[IO, Byte]
消費せjava.io.InputStream
ずに変換できる方法はありますか?
タナクス!