/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.1 * User agent: apibuilder app.apibuilder.io/nccloud/common/0.0.1/play_2_6 */ package de.nccloud.common.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 de.nccloud.common.v0.models.json._ implicit val jsonReadsCommonErrorSourceType: play.api.libs.json.Reads[de.nccloud.common.v0.models.ErrorSourceType] = new play.api.libs.json.Reads[de.nccloud.common.v0.models.ErrorSourceType] { def reads( js: play.api.libs.json.JsValue ): play.api.libs.json.JsResult[de.nccloud.common.v0.models.ErrorSourceType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.ErrorSourceType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.ErrorSourceType(v)) case _: play.api.libs.json.JsError => (js \ "error_source_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.ErrorSourceType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesCommonErrorSourceType(obj: de.nccloud.common.v0.models.ErrorSourceType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectErrorSourceType(obj: de.nccloud.common.v0.models.ErrorSourceType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesCommonErrorSourceType: play.api.libs.json.Writes[ErrorSourceType] = { (obj: de.nccloud.common.v0.models.ErrorSourceType) => { de.nccloud.common.v0.models.json.jsonWritesCommonErrorSourceType(obj) } } implicit val jsonReadsCommonHealthStatus: play.api.libs.json.Reads[de.nccloud.common.v0.models.HealthStatus] = new play.api.libs.json.Reads[de.nccloud.common.v0.models.HealthStatus] { def reads( js: play.api.libs.json.JsValue ): play.api.libs.json.JsResult[de.nccloud.common.v0.models.HealthStatus] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.HealthStatus(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.HealthStatus(v)) case _: play.api.libs.json.JsError => (js \ "health_status").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.HealthStatus(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesCommonHealthStatus(obj: de.nccloud.common.v0.models.HealthStatus) = { play.api.libs.json.JsString(obj.toString) } def jsObjectHealthStatus(obj: de.nccloud.common.v0.models.HealthStatus) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesCommonHealthStatus: play.api.libs.json.Writes[HealthStatus] = { (obj: de.nccloud.common.v0.models.HealthStatus) => { de.nccloud.common.v0.models.json.jsonWritesCommonHealthStatus(obj) } } implicit val jsonReadsCommonSortDirection: play.api.libs.json.Reads[de.nccloud.common.v0.models.SortDirection] = new play.api.libs.json.Reads[de.nccloud.common.v0.models.SortDirection] { def reads( js: play.api.libs.json.JsValue ): play.api.libs.json.JsResult[de.nccloud.common.v0.models.SortDirection] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.SortDirection(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.SortDirection(v)) case _: play.api.libs.json.JsError => (js \ "sort_direction").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.common.v0.models.SortDirection(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesCommonSortDirection(obj: de.nccloud.common.v0.models.SortDirection) = { play.api.libs.json.JsString(obj.toString) } def jsObjectSortDirection(obj: de.nccloud.common.v0.models.SortDirection) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesCommonSortDirection: play.api.libs.json.Writes[SortDirection] = { (obj: de.nccloud.common.v0.models.SortDirection) => { de.nccloud.common.v0.models.json.jsonWritesCommonSortDirection(obj) } } implicit def jsonReadsCommonAudit: play.api.libs.json.Reads[de.nccloud.common.v0.models.Audit] = { for { createdAt <- (__ \ "created_at").read[_root_.java.time.OffsetDateTime] createdBy <- (__ \ "created_by").read[_root_.java.util.UUID] updatedAt <- (__ \ "updated_at").read[_root_.java.time.OffsetDateTime] updatedBy <- (__ \ "updated_by").read[_root_.java.util.UUID] } yield Audit(createdAt, createdBy, updatedAt, updatedBy) } def jsObjectAudit(obj: de.nccloud.common.v0.models.Audit): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "created_at" -> play.api.libs.json.JsString(obj.createdAt.toString), "created_by" -> play.api.libs.json.JsString(obj.createdBy.toString), "updated_at" -> play.api.libs.json.JsString(obj.updatedAt.toString), "updated_by" -> play.api.libs.json.JsString(obj.updatedBy.toString) ) } implicit def jsonWritesCommonAudit: play.api.libs.json.Writes[Audit] = { (obj: de.nccloud.common.v0.models.Audit) => { de.nccloud.common.v0.models.json.jsObjectAudit(obj) } } implicit def jsonReadsCommonErrorLinks: play.api.libs.json.Reads[de.nccloud.common.v0.models.ErrorLinks] = { for { about <- (__ \ "about").readNullable[de.nccloud.common.v0.models.Link] `type` <- (__ \ "type").readNullable[de.nccloud.common.v0.models.Link] } yield ErrorLinks(about, `type`) } def jsObjectErrorLinks(obj: de.nccloud.common.v0.models.ErrorLinks): play.api.libs.json.JsObject = { (obj.about match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("about" -> de.nccloud.common.v0.models.json.jsObjectLink(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> de.nccloud.common.v0.models.json.jsObjectLink(x)) }) } implicit def jsonWritesCommonErrorLinks: play.api.libs.json.Writes[ErrorLinks] = { (obj: de.nccloud.common.v0.models.ErrorLinks) => { de.nccloud.common.v0.models.json.jsObjectErrorLinks(obj) } } implicit def jsonReadsCommonErrorSource: play.api.libs.json.Reads[de.nccloud.common.v0.models.ErrorSource] = { for { `type` <- (__ \ "type").read[de.nccloud.common.v0.models.ErrorSourceType] source <- (__ \ "source").read[String] } yield ErrorSource(`type`, source) } def jsObjectErrorSource(obj: de.nccloud.common.v0.models.ErrorSource): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`.toString), "source" -> play.api.libs.json.JsString(obj.source) ) } implicit def jsonWritesCommonErrorSource: play.api.libs.json.Writes[ErrorSource] = { (obj: de.nccloud.common.v0.models.ErrorSource) => { de.nccloud.common.v0.models.json.jsObjectErrorSource(obj) } } implicit def jsonReadsCommonGenericError: play.api.libs.json.Reads[de.nccloud.common.v0.models.GenericError] = { for { links <- (__ \ "links").readNullable[de.nccloud.common.v0.models.ErrorLinks] code <- (__ \ "code").read[String] title <- (__ \ "title").read[String] detail <- (__ \ "detail").read[String] source <- (__ \ "source").readNullable[de.nccloud.common.v0.models.ErrorSource] meta <- (__ \ "meta").readNullable[_root_.play.api.libs.json.JsObject] } yield GenericError(links, code, title, detail, source, meta) } def jsObjectGenericError(obj: de.nccloud.common.v0.models.GenericError): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "code" -> play.api.libs.json.JsString(obj.code), "title" -> play.api.libs.json.JsString(obj.title), "detail" -> play.api.libs.json.JsString(obj.detail) ) ++ (obj.links match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("links" -> de.nccloud.common.v0.models.json.jsObjectErrorLinks(x)) }) ++ (obj.source match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("source" -> de.nccloud.common.v0.models.json.jsObjectErrorSource(x)) }) ++ (obj.meta match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("meta" -> x) }) } implicit def jsonWritesCommonGenericError: play.api.libs.json.Writes[GenericError] = { (obj: de.nccloud.common.v0.models.GenericError) => { de.nccloud.common.v0.models.json.jsObjectGenericError(obj) } } implicit def jsonReadsCommonHealthCheck: play.api.libs.json.Reads[de.nccloud.common.v0.models.HealthCheck] = { for { status <- (__ \ "status").read[de.nccloud.common.v0.models.HealthStatus] message <- (__ \ "message").readNullable[String] } yield HealthCheck(status, message) } def jsObjectHealthCheck(obj: de.nccloud.common.v0.models.HealthCheck): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "status" -> play.api.libs.json.JsString(obj.status.toString) ) ++ (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)) }) } implicit def jsonWritesCommonHealthCheck: play.api.libs.json.Writes[HealthCheck] = { (obj: de.nccloud.common.v0.models.HealthCheck) => { de.nccloud.common.v0.models.json.jsObjectHealthCheck(obj) } } implicit def jsonReadsCommonLinkObject: play.api.libs.json.Reads[de.nccloud.common.v0.models.LinkObject] = { for { href <- (__ \ "href").read[String] title <- (__ \ "title").readNullable[String] `type` <- (__ \ "type").readNullable[String] } yield LinkObject(href, title, `type`) } def jsObjectLinkObject(obj: de.nccloud.common.v0.models.LinkObject): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "href" -> play.api.libs.json.JsString(obj.href) ) ++ (obj.title match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("title" -> play.api.libs.json.JsString(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesCommonLinkObject: play.api.libs.json.Writes[LinkObject] = { (obj: de.nccloud.common.v0.models.LinkObject) => { de.nccloud.common.v0.models.json.jsObjectLinkObject(obj) } } implicit def jsonReadsCommonPageResponse: play.api.libs.json.Reads[de.nccloud.common.v0.models.PageResponse] = { for { offset <- (__ \ "offset").read[Int] limit <- (__ \ "limit").read[Int] sort <- (__ \ "sort").read[Seq[de.nccloud.common.v0.models.Sort]] totalResults <- (__ \ "total_results").read[Long] totalPages <- (__ \ "total_pages").read[Long] } yield PageResponse(offset, limit, sort, totalResults, totalPages) } def jsObjectPageResponse(obj: de.nccloud.common.v0.models.PageResponse): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "offset" -> play.api.libs.json.JsNumber(obj.offset), "limit" -> play.api.libs.json.JsNumber(obj.limit), "sort" -> play.api.libs.json.Json.toJson(obj.sort), "total_results" -> play.api.libs.json.JsNumber(obj.totalResults), "total_pages" -> play.api.libs.json.JsNumber(obj.totalPages) ) } implicit def jsonWritesCommonPageResponse: play.api.libs.json.Writes[PageResponse] = { (obj: de.nccloud.common.v0.models.PageResponse) => { de.nccloud.common.v0.models.json.jsObjectPageResponse(obj) } } implicit def jsonReadsCommonPagingForm: play.api.libs.json.Reads[de.nccloud.common.v0.models.PagingForm] = { for { offset <- (__ \ "offset").read[Int] limit <- (__ \ "limit").read[Int] sort <- (__ \ "sort").readNullable[Seq[de.nccloud.common.v0.models.Sort]] } yield PagingForm(offset, limit, sort) } def jsObjectPagingForm(obj: de.nccloud.common.v0.models.PagingForm): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "offset" -> play.api.libs.json.JsNumber(obj.offset), "limit" -> play.api.libs.json.JsNumber(obj.limit) ) ++ (obj.sort match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("sort" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesCommonPagingForm: play.api.libs.json.Writes[PagingForm] = { (obj: de.nccloud.common.v0.models.PagingForm) => { de.nccloud.common.v0.models.json.jsObjectPagingForm(obj) } } implicit def jsonReadsCommonServiceInfo: play.api.libs.json.Reads[de.nccloud.common.v0.models.ServiceInfo] = { for { name <- (__ \ "name").read[String] version <- (__ \ "version").read[String] uri <- (__ \ "uri").read[String] title <- (__ \ "title").readNullable[String] description <- (__ \ "description").readNullable[String] } yield ServiceInfo(name, version, uri, title, description) } def jsObjectServiceInfo(obj: de.nccloud.common.v0.models.ServiceInfo): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "version" -> play.api.libs.json.JsString(obj.version), "uri" -> play.api.libs.json.JsString(obj.uri) ) ++ (obj.title match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("title" -> play.api.libs.json.JsString(x)) }) ++ (obj.description match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("description" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesCommonServiceInfo: play.api.libs.json.Writes[ServiceInfo] = { (obj: de.nccloud.common.v0.models.ServiceInfo) => { de.nccloud.common.v0.models.json.jsObjectServiceInfo(obj) } } implicit def jsonReadsCommonSort: play.api.libs.json.Reads[de.nccloud.common.v0.models.Sort] = { for { property <- (__ \ "property").read[String] direction <- (__ \ "direction").read[de.nccloud.common.v0.models.SortDirection] } yield Sort(property, direction) } def jsObjectSort(obj: de.nccloud.common.v0.models.Sort): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "property" -> play.api.libs.json.JsString(obj.property), "direction" -> play.api.libs.json.JsString(obj.direction.toString) ) } implicit def jsonWritesCommonSort: play.api.libs.json.Writes[Sort] = { (obj: de.nccloud.common.v0.models.Sort) => { de.nccloud.common.v0.models.json.jsObjectSort(obj) } } implicit def jsonReadsCommonLinkString: play.api.libs.json.Reads[de.nccloud.common.v0.models.LinkString] = { (__ \ "value").read[String].map { x => LinkString(value = x) } } implicit def jsonReadsCommonLink: play.api.libs.json.Reads[de.nccloud.common.v0.models.Link] = { ( (__ \ "string").read(jsonReadsCommonLinkString).asInstanceOf[play.api.libs.json.Reads[Link]] orElse (__ \ "link_object").read(jsonReadsCommonLinkObject).asInstanceOf[play.api.libs.json.Reads[Link]] orElse play.api.libs.json .Reads(jsValue => play.api.libs.json.JsSuccess(LinkUndefinedType(jsValue.toString))) .asInstanceOf[play.api.libs.json.Reads[Link]] ) } def jsObjectLink(obj: de.nccloud.common.v0.models.Link): play.api.libs.json.JsObject = { obj match { case x: de.nccloud.common.v0.models.LinkString => play.api.libs.json.Json .obj("string" -> play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(x.value))) case x: de.nccloud.common.v0.models.LinkObject => play.api.libs.json.Json.obj("link_object" -> de.nccloud.common.v0.models.json.jsObjectLinkObject(x)) case x: de.nccloud.common.v0.models.LinkUndefinedType => { scala.util.Try { // If we received a JSON object - echo it back. This is a workaround for a bug in // serialization for unions w/out discriminators where they sometimes have the // type wrapper and sometimes do not play.api.libs.json.Json.parse(x.description).asInstanceOf[play.api.libs.json.JsObject] } match { case scala.util.Success(o) => o case scala.util.Failure(_) => sys.error("The type[de.nccloud.common.v0.models.LinkUndefinedType] should never be serialized") } } } } implicit def jsonWritesCommonLink: play.api.libs.json.Writes[Link] = { (obj: de.nccloud.common.v0.models.Link) => { de.nccloud.common.v0.models.json.jsObjectLink(obj) } } }