Advertisement
Guest User

Untitled

a guest
Jan 27th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. import org.http4s.client.blaze.SimpleHttp1Client
  2. import org.http4s.Status.ResponseClass.Successful
  3. import io.circe.syntax._
  4. import org.http4s._
  5. import org.http4s.headers._
  6. import org.http4s.circe._
  7. import scalaz.concurrent.Task
  8.  
  9. final case class Login(username: String, password: String)
  10. final case class Token(token: String)
  11. object JsonHelpers {
  12. import io.circe.generic.auto._
  13. // implicit val tokenDecoder : Decoder[Token] = Decoder.forProduct1("token")(Token.apply)
  14. // implicit val tokenEncoder : Encoder[Token] = Encoder.forProduct1("token")(u => u.token)
  15. // implicit val loginDecoder : Decoder[Login] = Decoder.forProduct2("username", "password")(Login.apply)
  16. // implicit val loginEncoder : Encoder[Login] = Encoder.forProduct2("username", "password")(u => (u.username, u.password))
  17. implicit val loginEntityEncoder : EntityEncoder[Login] = jsonEncoderOf[Login]
  18. implicit val loginEntityDecoder : EntityDecoder[Login] = jsonOf[Login]
  19. implicit val tokenEntityEncoder: EntityEncoder[Token] = jsonEncoderOf[Token]
  20. implicit val tokenEntityDecoder : EntityDecoder[Token] = jsonOf[Token]
  21. }
  22.  
  23. object Http4sTest2 extends App {
  24. import JsonHelpers._
  25. val url = "http://www.myserver.com/api/foo"
  26. val uri = Uri.fromString(url).valueOr(throw _)
  27. val list = List[Header](`Content-Type`(MediaType.`application/json`), `Accept`(MediaType.`application/json`))
  28. val request = Request(uri = uri, method = Method.POST)
  29. .withBody(Login("foo", "bar").asJson)
  30. .map{r => r.replaceAllHeaders(list :_*)}.run
  31. val client = SimpleHttp1Client()
  32. val result = client.fetch[Option[Token]](request){
  33. case Successful(response) => response.as[Option[Token]]
  34. case _ => Task(Option.empty[Token])
  35. }.run
  36. println(result)
  37. }
  38.  
  39. object JsonHelpers {
  40. import io.circe.generic.auto._
  41. implicit val loginEntityEncoder : EntityEncoder[Login] = jsonEncoderOf[Login]
  42. implicit val loginEntityDecoder : EntityDecoder[Login] = jsonOf[Login]
  43. implicit val tokenEntityEncoder: EntityEncoder[Token] = jsonEncoderOf[Token]
  44. implicit val tokenEntityDecoder : EntityDecoder[Token] = jsonOf[Token]
  45. }
  46.  
  47. Error:(23, 67) could not find implicit value for parameter decoder: io.circe.Decoder[Login]
  48. implicit val loginEntityDecoder : EntityDecoder[Login] = jsonOf[Login]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement