Scala, Hammock - получить заголовки HTTP-ответа и преобразовать JSON в пользовательский объект - PullRequest
0 голосов
/ 10 ноября 2019

Я создал простую программу, которая использует Hammock (https://github.com/pepegar/hammock), и теперь я хотел бы получить ответ от github API с заголовками reposne. Я создал код, подобный этому:

object GitHttpClient extends App {
  implicit val decoder = jsonOf[IO, List[GitRepository]]
  implicit val interpreter = ApacheInterpreter.instance[IO]

  val response = Hammock
    .request(Method.GET, uri"https://api.github.com/orgs/github/repos?per_page=3", Map())
    .as[List[GitRepository]]
    .exec[IO]
    .unsafeRunSync()

  println(response)
}

case class GitRepository(full_name: String, contributors_url: String)

И все работает нормально, я получил Git данные, сопоставленные с моим объектом. Но теперь я также хочу получить headers из response, и я не могу сделать это простым response.headers. Только когда я удаляю .as[List[GitRepository]] строки и имеют целые HttpResponse Я мог получить доступ headers. Можно ли получить headers без разбора целых HttpResponse?

1 Ответ

0 голосов
/ 10 ноября 2019

Я решил эту проблему с помощью Decoder после полученного ответа:

 val response = Hammock
    .request(Method.GET, uri"https://api.github.com/orgs/github/repos?per_page=3", Map())
    .exec[IO]
    .unsafeRunSync()

    println(response.headers("Link") contains ("next"))
    println(HammockDecoder[List[GitRepository]].decode(response.entity))
...