Получите поток сущности из ответа Http4s с помощью Circe

Я пытаюсь получитьStream[IO, Job]с http4sResponse, но компилятор Scala предупреждает меня, что не может найти подходящегоDecoder:

      Cannot decode into a value of type fs2.Stream[IO,Job], because no EntityDecoder[[+A]IO[A], fs2.Stream[IO,Job]] instance could be found.
[error]         retrieved <- response.as[fs2.Stream[IO, Job]]

Код, который генерирует указанную выше ошибку, следующий:

      import io.circe.generic.auto._
import org.http4s.circe.CirceEntityCodec._
// Many other imports

"should return the stream of all jobs" in {
  for {
    response <- jobsRoutes.orNotFound.run(
      Request(
        method = Method.GET,
        uri = uri"/jobs",
        headers = Headers(Accept(MediaType.`text/event-stream`))
      )
    )
    retrieved <- response.as[fs2.Stream[IO, Job]]
  } yield {
    response.status shouldBe Status.Ok
  }
}

вbuild.sbtфайл, у меня есть следующие зависимости:

      // Many other omitted dependencies
"org.http4s"            %% "http4s-circe"                  % "0.23.14",
"io.circe"              %% "circe-generic"                 % "0.14.2",
"io.circe"              %% "circe-fs2"                     % "0.14.0",

ОпределениеJobсущность:

      final case class Job(
    id: UUID,
    date: Long,
    salaryLo: Option[Int],
    salaryHi: Option[Int],
    currency: Option[String],
    location: String,
    tags: List[String],
    description: String,
    localUrl: Option[String],
    externalUrl: Option[String]
    image: Option[String],
    country: Option[String],
    title: String,
    company: String,
    seniority: Option[String],
    other: Option[String]
)

Я не могу понять, что происходит.

0 ответов

Другие вопросы по тегам