Advertisement
Guest User

Untitled

a guest
Jan 27th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. case class Token(token: String)
  2. case class Login(username: String, password: String)
  3. object JsonCodec {
  4. implicit val decodeToken : Decoder[Token] = Decoder.forProduct1("token")(Token.apply)
  5. implicit val encodeToken : Encoder[Token] = Encoder.forProduct1("token")(u => u.token)
  6. implicit val decodeLogin : Decoder[Login] = Decoder.forProduct2("username", "password")(Login.apply)
  7. implicit val encodeLogin : Encoder[Login] = Encoder.forProduct2("username", "password")(u => (u.username, u.password))
  8. }
  9.  
  10. import JsonCodec._
  11. val client = SimpleHttp1Client()
  12. val uri = Uri.fromString(url).valueOr(throw _)
  13. val list = List[Header](`Content-Type`(MediaType.`application/json`), `Accept`(MediaType.`application/json`))
  14. val req = Request(uri = uri, method = Method.POST).withBody(Login("f", "b")).map(_.replaceAllHeaders(list :_*))
  15. val result = client.expect(req)(jsonOf[Token]).unsafePerformSync
  16. Some(result.token)
  17.  
  18. Error:(49, 66) could not find implicit value for parameter w: org.http4s.EntityEncoder[Login]
  19. val req = Request(uri = uri, method = Method.POST).withBody(Login("f", "b")).map(_.replaceAllHeaders(list :_*))
  20.  
  21. import io.circe.generic.auto._
  22. import io.circe._
  23. object JsonHelpers {
  24. implicit val loginEncoder : EntityEncoder[Login] = jsonEncoderOf[Login]
  25. implicit val loginDecoder : EntityDecoder[Login] = jsonOf[Login]
  26. implicit val tokenEncoder: EntityEncoder[Token] = jsonEncoderOf[Token]
  27. implicit val tokenDecoder : EntityDecoder[Token] = jsonOf[Token]
  28. implicit val decodeToken : Decoder[Token] = Decoder.forProduct1("token")(Token.apply)
  29. implicit val encodeToken : Encoder[Token] = Encoder.forProduct1("token")(u => u.token)
  30. implicit val decodeLogin : Decoder[Login] = Decoder.forProduct2("username", "password")(Login.apply)
  31. implicit val encodeLogin : Encoder[Login] = Encoder.forProduct2("username", "password")(u => (u.username, u.password))
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement