0

I am using Finagle/Finch and I get this error:

diverging implicit expansion for type argonaut.DecodeJson[A] starting 
  with method MapDecodeJson in trait DecodeJsons
diverging implicit expansion for type argonaut.DecodeJson[V] starting 
  with method MapDecodeJson in trait DecodeJsons
not enough arguments for method body: (implicit d: 
 io.finch.Decode.Aux[A,CT], implicit ct: 
 scala.reflect.ClassTag[A])io.finch.Endpoint[A]. Unspecified value 
 parameters d, ct.

For this code:

def sendPost(db: CommDb): Endpoint[String] =
  post("posts" :: body.as[String]) { s: String =>
    Ok("success")
  }

I have no idea how to resolve this.

James Black
  • 41,583
  • 10
  • 86
  • 166

1 Answers1

2

The body API has changed in Finch 0.11. Just change your body call to body[CT, Foo] (where CT is content-type) and you should get that compiled. One thing: String body is sort of a special case, so you might want to use stringBody (no type parameters) instead since body is biased towards decoding a payload with a given JSON/XML/whatever decoder.

scala> import io.finch._, io.finch.circe._

scala> s(Input.post("/").withBody[Application.Json](Map("foo" -> "bar"))).awaitValueUnsafe()
res2: Option[String] = Some({"foo":"bar"})
Vladimir Kostyukov
  • 2,492
  • 3
  • 21
  • 30