aboutsummaryrefslogtreecommitdiff
path: root/circe/src/main/scala/com/softwaremill/sttp/circe.scala
diff options
context:
space:
mode:
Diffstat (limited to 'circe/src/main/scala/com/softwaremill/sttp/circe.scala')
-rw-r--r--circe/src/main/scala/com/softwaremill/sttp/circe.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/circe/src/main/scala/com/softwaremill/sttp/circe.scala b/circe/src/main/scala/com/softwaremill/sttp/circe.scala
new file mode 100644
index 0000000..95a72e1
--- /dev/null
+++ b/circe/src/main/scala/com/softwaremill/sttp/circe.scala
@@ -0,0 +1,17 @@
+package com.softwaremill.sttp
+
+import com.softwaremill.sttp.model._
+import io.circe.parser._
+import io.circe.{Decoder, Encoder}
+
+package object circe {
+ private[sttp] val ApplicationJsonContentType = "application/json"
+
+ implicit def circeBodySerializer[B](
+ implicit encoder: Encoder[B]): BodySerializer[B] =
+ b => StringBody(encoder(b).noSpaces, Utf8, Some(ApplicationJsonContentType))
+
+ def asJson[B: Decoder]: ResponseAs[Either[io.circe.Error, B], Nothing] =
+ asString(Utf8).map(decode[B])
+
+}