/** * Generated by API Builder - https://www.apibuilder.io * Service version: 1.0.0 * User agent: apibuilder app.apibuilder.io/teambytes/hipchat-sns-bridge/1.0.0/http4s_0_17 */ package com.teambytes.hipchat.sns.bridge.v1.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 com.teambytes.hipchat.sns.bridge.v1.models.json._ // Make Scala 2.11 Either monadic private[v1] implicit def eitherOps[A,B](e: Either[A,B]) = cats.implicits.catsSyntaxEither(e) private[v1] implicit val decodeUUID: Decoder[_root_.java.util.UUID] = Decoder.decodeString.emapTry(str => Try(_root_.java.util.UUID.fromString(str))) private[v1] implicit val encodeUUID: Encoder[_root_.java.util.UUID] = Encoder.encodeString.contramap[_root_.java.util.UUID](uuid => uuid.toString) private[v1] implicit val decodeInstant: Decoder[_root_.java.time.Instant] = Decoder.decodeString.emapTry(str => Try(_root_.java.time.OffsetDateTime.parse(str).toInstant)) private[v1] implicit val encodeInstant: Encoder[_root_.java.time.Instant] = Encoder.encodeString.contramap[_root_.java.time.Instant](_.toString) private[v1] implicit val decodeLocalDate: Decoder[_root_.java.time.LocalDate] = Decoder.decodeString.emapTry(str => Try(_root_.java.time.LocalDate.parse(str))) private[v1] implicit val encodeLocalDate: Encoder[_root_.java.time.LocalDate] = Encoder.encodeString.contramap[_root_.java.time.LocalDate](_.toString) implicit val jsonDecoderHipchatSnsBridgeHipchatScope: Decoder[com.teambytes.hipchat.sns.bridge.v1.models.HipchatScope] = Decoder.decodeString.map(com.teambytes.hipchat.sns.bridge.v1.models.HipchatScope(_)) implicit val jsonEncoderHipchatSnsBridgeHipchatScope: Encoder[com.teambytes.hipchat.sns.bridge.v1.models.HipchatScope] = Encoder.encodeString.contramap[com.teambytes.hipchat.sns.bridge.v1.models.HipchatScope](_.toString) implicit def decodeHipchatSnsBridgeError: Decoder[Error] = Decoder.instance { c => for { description <- c.downField("description").as[String] } yield { Error( description = description ) } } implicit def encodeHipchatSnsBridgeError: Encoder[Error] = Encoder.instance { t => Json.fromFields(Seq( Some("description" -> t.description.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatApiConsumer: Decoder[HipchatApiConsumer] = Decoder.instance { c => for { scopes <- c.downField("scopes").as[Seq[com.teambytes.hipchat.sns.bridge.v1.models.HipchatScope]] fromName <- c.downField("fromName").as[Option[String]] } yield { HipchatApiConsumer( scopes = scopes, fromName = fromName ) } } implicit def encodeHipchatSnsBridgeHipchatApiConsumer: Encoder[HipchatApiConsumer] = Encoder.instance { t => Json.fromFields(Seq( Some("scopes" -> t.scopes.asJson), t.fromName.map(t => "fromName" -> t.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatCapabilities: Decoder[HipchatCapabilities] = Decoder.instance { c => for { configurable <- c.downField("configurable").as[Option[com.teambytes.hipchat.sns.bridge.v1.models.HipchatConfigurationPage]] hipchatApiConsumer <- c.downField("hipchatApiConsumer").as[Option[com.teambytes.hipchat.sns.bridge.v1.models.HipchatApiConsumer]] installable <- c.downField("installable").as[Option[com.teambytes.hipchat.sns.bridge.v1.models.HipchatInstallable]] oauth2Provider <- c.downField("oauth2Provider").as[Option[com.teambytes.hipchat.sns.bridge.v1.models.HipchatOauth2Provider]] } yield { HipchatCapabilities( configurable = configurable, hipchatApiConsumer = hipchatApiConsumer, installable = installable, oauth2Provider = oauth2Provider ) } } implicit def encodeHipchatSnsBridgeHipchatCapabilities: Encoder[HipchatCapabilities] = Encoder.instance { t => Json.fromFields(Seq( t.configurable.map(t => "configurable" -> t.asJson), t.hipchatApiConsumer.map(t => "hipchatApiConsumer" -> t.asJson), t.installable.map(t => "installable" -> t.asJson), t.oauth2Provider.map(t => "oauth2Provider" -> t.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatCapabilitiesDescriptor: Decoder[HipchatCapabilitiesDescriptor] = Decoder.instance { c => for { name <- c.downField("name").as[String] description <- c.downField("description").as[String] key <- c.downField("key").as[String] apiVersion <- c.downField("apiVersion").as[Option[String]] capabilities <- c.downField("capabilities").as[Option[com.teambytes.hipchat.sns.bridge.v1.models.HipchatCapabilities]] links <- c.downField("links").as[com.teambytes.hipchat.sns.bridge.v1.models.HipchatLinks] vendor <- c.downField("vendor").as[Option[com.teambytes.hipchat.sns.bridge.v1.models.HipchatVendor]] } yield { HipchatCapabilitiesDescriptor( name = name, description = description, key = key, apiVersion = apiVersion, capabilities = capabilities, links = links, vendor = vendor ) } } implicit def encodeHipchatSnsBridgeHipchatCapabilitiesDescriptor: Encoder[HipchatCapabilitiesDescriptor] = Encoder.instance { t => Json.fromFields(Seq( Some("name" -> t.name.asJson), Some("description" -> t.description.asJson), Some("key" -> t.key.asJson), t.apiVersion.map(t => "apiVersion" -> t.asJson), t.capabilities.map(t => "capabilities" -> t.asJson), Some("links" -> t.links.asJson), t.vendor.map(t => "vendor" -> t.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatConfigurationPage: Decoder[HipchatConfigurationPage] = Decoder.instance { c => for { allowAccessToRoomAdmins <- c.downField("allowAccessToRoomAdmins").as[Option[String]] url <- c.downField("url").as[String] } yield { HipchatConfigurationPage( allowAccessToRoomAdmins = allowAccessToRoomAdmins, url = url ) } } implicit def encodeHipchatSnsBridgeHipchatConfigurationPage: Encoder[HipchatConfigurationPage] = Encoder.instance { t => Json.fromFields(Seq( t.allowAccessToRoomAdmins.map(t => "allowAccessToRoomAdmins" -> t.asJson), Some("url" -> t.url.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatInstallData: Decoder[HipchatInstallData] = Decoder.instance { c => for { capabilitiesUrl <- c.downField("capabilitiesUrl").as[String] oauthId <- c.downField("oauthId").as[String] oauthSecret <- c.downField("oauthSecret").as[String] groupId <- c.downField("groupId").as[Long] roomId <- c.downField("roomId").as[Option[String]] } yield { HipchatInstallData( capabilitiesUrl = capabilitiesUrl, oauthId = oauthId, oauthSecret = oauthSecret, groupId = groupId, roomId = roomId ) } } implicit def encodeHipchatSnsBridgeHipchatInstallData: Encoder[HipchatInstallData] = Encoder.instance { t => Json.fromFields(Seq( Some("capabilitiesUrl" -> t.capabilitiesUrl.asJson), Some("oauthId" -> t.oauthId.asJson), Some("oauthSecret" -> t.oauthSecret.asJson), Some("groupId" -> t.groupId.asJson), t.roomId.map(t => "roomId" -> t.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatInstallable: Decoder[HipchatInstallable] = Decoder.instance { c => for { callbackUrl <- c.downField("callbackUrl").as[Option[String]] installedUrl <- c.downField("installedUrl").as[Option[String]] allowGlobal <- c.downField("allowGlobal").as[Option[Boolean]] allowRoom <- c.downField("allowRoom").as[Option[Boolean]] } yield { HipchatInstallable( callbackUrl = callbackUrl, installedUrl = installedUrl, allowGlobal = allowGlobal, allowRoom = allowRoom ) } } implicit def encodeHipchatSnsBridgeHipchatInstallable: Encoder[HipchatInstallable] = Encoder.instance { t => Json.fromFields(Seq( t.callbackUrl.map(t => "callbackUrl" -> t.asJson), t.installedUrl.map(t => "installedUrl" -> t.asJson), t.allowGlobal.map(t => "allowGlobal" -> t.asJson), t.allowRoom.map(t => "allowRoom" -> t.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatLinks: Decoder[HipchatLinks] = Decoder.instance { c => for { homepage <- c.downField("homepage").as[Option[String]] api <- c.downField("api").as[Option[String]] self <- c.downField("self").as[String] } yield { HipchatLinks( homepage = homepage, api = api, self = self ) } } implicit def encodeHipchatSnsBridgeHipchatLinks: Encoder[HipchatLinks] = Encoder.instance { t => Json.fromFields(Seq( t.homepage.map(t => "homepage" -> t.asJson), t.api.map(t => "api" -> t.asJson), Some("self" -> t.self.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatOauth2Provider: Decoder[HipchatOauth2Provider] = Decoder.instance { c => for { tokenUrl <- c.downField("tokenUrl").as[Option[String]] authorizationUrl <- c.downField("authorizationUrl").as[Option[String]] } yield { HipchatOauth2Provider( tokenUrl = tokenUrl, authorizationUrl = authorizationUrl ) } } implicit def encodeHipchatSnsBridgeHipchatOauth2Provider: Encoder[HipchatOauth2Provider] = Encoder.instance { t => Json.fromFields(Seq( t.tokenUrl.map(t => "tokenUrl" -> t.asJson), t.authorizationUrl.map(t => "authorizationUrl" -> t.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeHipchatVendor: Decoder[HipchatVendor] = Decoder.instance { c => for { name <- c.downField("name").as[String] url <- c.downField("url").as[String] } yield { HipchatVendor( name = name, url = url ) } } implicit def encodeHipchatSnsBridgeHipchatVendor: Encoder[HipchatVendor] = Encoder.instance { t => Json.fromFields(Seq( Some("name" -> t.name.asJson), Some("url" -> t.url.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeServiceInfo: Decoder[ServiceInfo] = Decoder.instance { c => for { name <- c.downField("name").as[String] version <- c.downField("version").as[String] scalaVersion <- c.downField("scala_version").as[String] sbtVersion <- c.downField("sbt_version").as[String] buildTime <- c.downField("build_time").as[_root_.java.time.Instant] } yield { ServiceInfo( name = name, version = version, scalaVersion = scalaVersion, sbtVersion = sbtVersion, buildTime = buildTime ) } } implicit def encodeHipchatSnsBridgeServiceInfo: Encoder[ServiceInfo] = Encoder.instance { t => Json.fromFields(Seq( Some("name" -> t.name.asJson), Some("version" -> t.version.asJson), Some("scala_version" -> t.scalaVersion.asJson), Some("sbt_version" -> t.sbtVersion.asJson), Some("build_time" -> t.buildTime.asJson) ).flatten) } implicit def decodeHipchatSnsBridgeSnsNotification: Decoder[SnsNotification] = Decoder.instance { c => for { __type__ <- c.downField("Type").as[String] messageId <- c.downField("MessageId").as[String] topicArn <- c.downField("TopicArn").as[String] message <- c.downField("Message").as[String] timestamp <- c.downField("Timestamp").as[String] signatureVersion <- c.downField("SignatureVersion").as[String] signature <- c.downField("Signature").as[String] signingCertURL <- c.downField("SigningCertURL").as[String] token <- c.downField("Token").as[Option[String]] subject <- c.downField("Subject").as[Option[String]] subscribeURL <- c.downField("SubscribeURL").as[Option[String]] unsubscribeURL <- c.downField("UnsubscribeURL").as[Option[String]] } yield { SnsNotification( `type` = __type__, messageId = messageId, topicArn = topicArn, message = message, timestamp = timestamp, signatureVersion = signatureVersion, signature = signature, signingCertURL = signingCertURL, token = token, subject = subject, subscribeURL = subscribeURL, unsubscribeURL = unsubscribeURL ) } } implicit def encodeHipchatSnsBridgeSnsNotification: Encoder[SnsNotification] = Encoder.instance { t => Json.fromFields(Seq( Some("Type" -> t.`type`.asJson), Some("MessageId" -> t.messageId.asJson), Some("TopicArn" -> t.topicArn.asJson), Some("Message" -> t.message.asJson), Some("Timestamp" -> t.timestamp.asJson), Some("SignatureVersion" -> t.signatureVersion.asJson), Some("Signature" -> t.signature.asJson), Some("SigningCertURL" -> t.signingCertURL.asJson), t.token.map(t => "Token" -> t.asJson), t.subject.map(t => "Subject" -> t.asJson), t.subscribeURL.map(t => "SubscribeURL" -> t.asJson), t.unsubscribeURL.map(t => "UnsubscribeURL" -> t.asJson) ).flatten) } } }