/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.1.0-SNAPSHOT * User agent: apibuilder app.apibuilder.io/movio/apidoc-generator-attributes/0.1.0-SNAPSHOT/http4s_0_22 */ package movio.apidoc.generator.attributes.v0.models { package object json { import io.circe.Decoder._ import io.circe.Encoder._ import scala.language.implicitConversions // See below - Make Scala 2.11 Either monadic import scala.util.Try import io.circe.{Json, JsonObject, Encoder, Decoder, DecodingFailure} import io.circe.syntax._ import movio.apidoc.generator.attributes.v0.models.json._ // Make Scala 2.11 Either monadic private[v0] implicit def eitherOps[A,B](e: Either[A,B]) = cats.implicits.catsSyntaxEither(e) private[v0] implicit val decodeUUID: Decoder[_root_.java.util.UUID] = Decoder.decodeString.emapTry(str => Try(_root_.java.util.UUID.fromString(str))) private[v0] implicit val encodeUUID: Encoder[_root_.java.util.UUID] = Encoder.encodeString.contramap[_root_.java.util.UUID](uuid => uuid.toString) private[v0] implicit val decodeInstant: Decoder[_root_.java.time.Instant] = Decoder.decodeString.emapTry(str => Try(_root_.java.time.OffsetDateTime.parse(str).toInstant)) private[v0] implicit val encodeInstant: Encoder[_root_.java.time.Instant] = Encoder.encodeString.contramap[_root_.java.time.Instant](_.toString) private[v0] implicit val decodeLocalDate: Decoder[_root_.java.time.LocalDate] = Decoder.decodeString.emapTry(str => Try(_root_.java.time.LocalDate.parse(str))) private[v0] implicit val encodeLocalDate: Encoder[_root_.java.time.LocalDate] = Encoder.encodeString.contramap[_root_.java.time.LocalDate](_.toString) implicit def decodeApidocGeneratorAttributesFieldValidation: Decoder[FieldValidation] = Decoder.instance { c => for { regex <- c.downField("regex").as[Option[String]] maximum <- c.downField("maximum").as[Option[Long]] minimum <- c.downField("minimum").as[Option[Long]] } yield { FieldValidation( regex = regex, maximum = maximum, minimum = minimum ) } } implicit def encodeApidocGeneratorAttributesFieldValidation: Encoder[FieldValidation] = Encoder.instance { t => Json.fromFields(Seq( t.regex.map(t => "regex" -> t.asJson), t.maximum.map(t => "maximum" -> t.asJson), t.minimum.map(t => "minimum" -> t.asJson) ).flatten) } implicit def decodeApidocGeneratorAttributesKafkaProps: Decoder[KafkaProps] = Decoder.instance { c => for { dataType <- c.downField("data_type").as[String] topic <- c.downField("topic").as[String] messageGenerateKey <- c.downField("message_generate_key").as[String] } yield { KafkaProps( dataType = dataType, topic = topic, messageGenerateKey = messageGenerateKey ) } } implicit def encodeApidocGeneratorAttributesKafkaProps: Encoder[KafkaProps] = Encoder.instance { t => Json.fromFields(Seq( Some("data_type" -> t.dataType.asJson), Some("topic" -> t.topic.asJson), Some("message_generate_key" -> t.messageGenerateKey.asJson) ).flatten) } implicit def decodeApidocGeneratorAttributesScalaFieldProps: Decoder[ScalaFieldProps] = Decoder.instance { c => for { __class__ <- c.downField("class").as[Option[String]] default <- c.downField("default").as[Option[String]] example <- c.downField("example").as[Option[String]] } yield { ScalaFieldProps( `class` = __class__, default = default, example = example ) } } implicit def encodeApidocGeneratorAttributesScalaFieldProps: Encoder[ScalaFieldProps] = Encoder.instance { t => Json.fromFields(Seq( t.`class`.map(t => "class" -> t.asJson), t.default.map(t => "default" -> t.asJson), t.example.map(t => "example" -> t.asJson) ).flatten) } implicit def decodeApidocGeneratorAttributesScalaModelProps: Decoder[ScalaModelProps] = Decoder.instance { c => for { __extends__ <- c.downField("extends").as[Option[Seq[String]]] } yield { ScalaModelProps( `extends` = __extends__ ) } } implicit def encodeApidocGeneratorAttributesScalaModelProps: Encoder[ScalaModelProps] = Encoder.instance { t => Json.fromFields(Seq( t.`extends`.map(t => "extends" -> t.asJson) ).flatten) } } }