/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.1-dev * User agent: apibuilder app.apibuilder.io/shopr/clickouts-api/0.0.1-dev/play_2_6 */ package com.shopr.api.clickouts.api.v0.models package object json { import play.api.libs.json.{__, JsString, Writes} import play.api.libs.functional.syntax._ import play.api.libs.json.Writes._ import play.api.libs.json.Reads._ import com.shopr.api.clickouts.api.v0.models.json._ implicit val jsonReadsClickoutsApiClientOrigin : play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.ClientOrigin] = new play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.ClientOrigin] { def reads( js: play.api.libs.json.JsValue ): play.api.libs.json.JsResult[com.shopr.api.clickouts.api.v0.models.ClientOrigin] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(com.shopr.api.clickouts.api.v0.models.ClientOrigin(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.shopr.api.clickouts.api.v0.models.ClientOrigin(v)) case _: play.api.libs.json.JsError => (js \ "client_origin").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.shopr.api.clickouts.api.v0.models.ClientOrigin(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesClickoutsApiClientOrigin(obj: com.shopr.api.clickouts.api.v0.models.ClientOrigin) = { play.api.libs.json.JsString(obj.toString) } def jsObjectClientOrigin(obj: com.shopr.api.clickouts.api.v0.models.ClientOrigin) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesClickoutsApiClientOrigin: play.api.libs.json.Writes[ClientOrigin] = { (obj: com.shopr.api.clickouts.api.v0.models.ClientOrigin) => { com.shopr.api.clickouts.api.v0.models.json.jsonWritesClickoutsApiClientOrigin(obj) } } implicit def jsonReadsClickoutsApiClickout : play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.Clickout] = { for { productId <- (__ \ "productId").read[String] seller <- (__ \ "seller").read[String] sellerProductId <- (__ \ "sellerProductId").read[String] price <- (__ \ "price").read[BigDecimal] deepUrl <- (__ \ "deepUrl").read[String] lowestPrice <- (__ \ "lowestPrice").read[BigDecimal] highestPrice <- (__ \ "highestPrice").read[BigDecimal] offerCount <- (__ \ "offerCount").read[Int] offerPosition <- (__ \ "offerPosition").read[Int] categoryId <- (__ \ "categoryId").read[String] tracking <- (__ \ "tracking").read[com.shopr.api.clickouts.api.v0.models.Tracking] creationTime <- (__ \ "creationTime").read[_root_.java.time.OffsetDateTime] } yield Clickout( productId, seller, sellerProductId, price, deepUrl, lowestPrice, highestPrice, offerCount, offerPosition, categoryId, tracking, creationTime ) } def jsObjectClickout(obj: com.shopr.api.clickouts.api.v0.models.Clickout): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "productId" -> play.api.libs.json.JsString(obj.productId), "seller" -> play.api.libs.json.JsString(obj.seller), "sellerProductId" -> play.api.libs.json.JsString(obj.sellerProductId), "price" -> play.api.libs.json.JsNumber(obj.price), "deepUrl" -> play.api.libs.json.JsString(obj.deepUrl), "lowestPrice" -> play.api.libs.json.JsNumber(obj.lowestPrice), "highestPrice" -> play.api.libs.json.JsNumber(obj.highestPrice), "offerCount" -> play.api.libs.json.JsNumber(obj.offerCount), "offerPosition" -> play.api.libs.json.JsNumber(obj.offerPosition), "categoryId" -> play.api.libs.json.JsString(obj.categoryId), "tracking" -> com.shopr.api.clickouts.api.v0.models.json.jsObjectTracking(obj.tracking), "creationTime" -> play.api.libs.json.JsString(obj.creationTime.toString) ) } implicit def jsonWritesClickoutsApiClickout: play.api.libs.json.Writes[Clickout] = { (obj: com.shopr.api.clickouts.api.v0.models.Clickout) => { com.shopr.api.clickouts.api.v0.models.json.jsObjectClickout(obj) } } implicit def jsonReadsClickoutsApiErrorCode : play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.ErrorCode] = { for { code <- (__ \ "code").read[String] localizedStringCode <- (__ \ "localized_string_code").read[String] } yield ErrorCode(code, localizedStringCode) } def jsObjectErrorCode(obj: com.shopr.api.clickouts.api.v0.models.ErrorCode): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "code" -> play.api.libs.json.JsString(obj.code), "localized_string_code" -> play.api.libs.json.JsString(obj.localizedStringCode) ) } implicit def jsonWritesClickoutsApiErrorCode: play.api.libs.json.Writes[ErrorCode] = { (obj: com.shopr.api.clickouts.api.v0.models.ErrorCode) => { com.shopr.api.clickouts.api.v0.models.json.jsObjectErrorCode(obj) } } implicit def jsonReadsClickoutsApiErrorResponse : play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.ErrorResponse] = { for { message <- (__ \ "message").readNullable[String] errorCodes <- (__ \ "error_codes").read[Seq[com.shopr.api.clickouts.api.v0.models.ErrorCode]] fingerprint <- (__ \ "fingerprint").readNullable[String] } yield ErrorResponse(message, errorCodes, fingerprint) } def jsObjectErrorResponse(obj: com.shopr.api.clickouts.api.v0.models.ErrorResponse): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "error_codes" -> play.api.libs.json.Json.toJson(obj.errorCodes) ) ++ (obj.message match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("message" -> play.api.libs.json.JsString(x)) }) ++ (obj.fingerprint match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("fingerprint" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesClickoutsApiErrorResponse: play.api.libs.json.Writes[ErrorResponse] = { (obj: com.shopr.api.clickouts.api.v0.models.ErrorResponse) => { com.shopr.api.clickouts.api.v0.models.json.jsObjectErrorResponse(obj) } } implicit def jsonReadsClickoutsApiStatus: play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.Status] = { (__ \ "response").read[String].map { x => Status(response = x) } } def jsObjectStatus(obj: com.shopr.api.clickouts.api.v0.models.Status): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "response" -> play.api.libs.json.JsString(obj.response) ) } implicit def jsonWritesClickoutsApiStatus: play.api.libs.json.Writes[Status] = { (obj: com.shopr.api.clickouts.api.v0.models.Status) => { com.shopr.api.clickouts.api.v0.models.json.jsObjectStatus(obj) } } implicit def jsonReadsClickoutsApiTracking : play.api.libs.json.Reads[com.shopr.api.clickouts.api.v0.models.Tracking] = { for { ipAddress <- (__ \ "ipAddress").read[String] origin <- (__ \ "origin").read[com.shopr.api.clickouts.api.v0.models.ClientOrigin] userAgent <- (__ \ "userAgent").readNullable[String] referrer <- (__ \ "referrer").readNullable[String] } yield Tracking(ipAddress, origin, userAgent, referrer) } def jsObjectTracking(obj: com.shopr.api.clickouts.api.v0.models.Tracking): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "ipAddress" -> play.api.libs.json.JsString(obj.ipAddress), "origin" -> play.api.libs.json.JsString(obj.origin.toString) ) ++ (obj.userAgent match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("userAgent" -> play.api.libs.json.JsString(x)) }) ++ (obj.referrer match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("referrer" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesClickoutsApiTracking: play.api.libs.json.Writes[Tracking] = { (obj: com.shopr.api.clickouts.api.v0.models.Tracking) => { com.shopr.api.clickouts.api.v0.models.json.jsObjectTracking(obj) } } }