All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.softwaremill.sttp.circe.SttpCirceApi.scala Maven / Gradle / Ivy

There is a newer version: 1.7.2
Show newest version
package com.softwaremill.sttp.circe

import cats.Show
import com.softwaremill.sttp._
import com.softwaremill.sttp.internal.Utf8
import io.circe.{Decoder, Encoder, Printer}
import io.circe.parser.decode

trait SttpCirceApi {
  implicit def circeBodySerializer[B](
      implicit encoder: Encoder[B],
      printer: Printer = Printer.noSpaces
  ): BodySerializer[B] =
    b => StringBody(encoder(b).pretty(printer), Utf8, Some(MediaTypes.Json))

  def asJson[B: Decoder: IsOption]: ResponseAs[Either[DeserializationError[io.circe.Error], B], Nothing] =
    asString(Utf8)
      .map(JsonInput.sanitize[B])
      .map(s => decode[B](s).left.map(e => DeserializationError(s, e, Show[io.circe.Error].show(e))))
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy