/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.1 * User agent: apibuilder app.apibuilder.io/nccloud/reporting-api/0.0.1/play_2_6 */ package de.nccloud.reporting.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 de.nccloud.common.v0.models.json._ import de.nccloud.reporting.api.v0.models.json._ implicit val jsonReadsReportingApiScalarType : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ScalarType] = new play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ScalarType] { def reads( js: play.api.libs.json.JsValue ): play.api.libs.json.JsResult[de.nccloud.reporting.api.v0.models.ScalarType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(de.nccloud.reporting.api.v0.models.ScalarType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.reporting.api.v0.models.ScalarType(v)) case _: play.api.libs.json.JsError => (js \ "scalar_type").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(de.nccloud.reporting.api.v0.models.ScalarType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesReportingApiScalarType(obj: de.nccloud.reporting.api.v0.models.ScalarType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectScalarType(obj: de.nccloud.reporting.api.v0.models.ScalarType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesReportingApiScalarType: play.api.libs.json.Writes[ScalarType] = { (obj: de.nccloud.reporting.api.v0.models.ScalarType) => { de.nccloud.reporting.api.v0.models.json.jsonWritesReportingApiScalarType(obj) } } implicit def jsonReadsReportingApiDeleteEvent : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.DeleteEvent] = { for { trackingId <- (__ \ "tracking_id").read[String] audit <- (__ \ "audit").read[de.nccloud.common.v0.models.Audit] } yield DeleteEvent(trackingId, audit) } def jsObjectDeleteEvent(obj: de.nccloud.reporting.api.v0.models.DeleteEvent): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "tracking_id" -> play.api.libs.json.JsString(obj.trackingId), "audit" -> de.nccloud.common.v0.models.json.jsObjectAudit(obj.audit) ) ++ play.api.libs.json.Json.obj("type" -> "delete_event") } implicit def jsonWritesReportingApiDeleteEvent: play.api.libs.json.Writes[DeleteEvent] = { (obj: de.nccloud.reporting.api.v0.models.DeleteEvent) => { de.nccloud.reporting.api.v0.models.json.jsObjectDeleteEvent(obj) } } implicit def jsonReadsReportingApiField: play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.Field] = { for { `type` <- (__ \ "type").read[de.nccloud.reporting.api.v0.models.ScalarType] isArray <- (__ \ "is_array").read[Boolean] fields <- (__ \ "fields").lazyReadNullable( play.api.libs.json.Reads.of[Map[String, de.nccloud.reporting.api.v0.models.Field]] ) label <- (__ \ "label").readNullable[String] description <- (__ \ "description").readNullable[String] } yield Field(`type`, isArray, fields, label, description) } def jsObjectField(obj: de.nccloud.reporting.api.v0.models.Field): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "type" -> play.api.libs.json.JsString(obj.`type`.toString), "is_array" -> play.api.libs.json.JsBoolean(obj.isArray) ) ++ (obj.fields match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("fields" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.label match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("label" -> 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 jsonWritesReportingApiField: play.api.libs.json.Writes[Field] = { (obj: de.nccloud.reporting.api.v0.models.Field) => { de.nccloud.reporting.api.v0.models.json.jsObjectField(obj) } } implicit def jsonReadsReportingApiFilter: play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.Filter] = { for { expression <- (__ \ "expression").readNullable[String] variables <- (__ \ "variables").readNullable[Map[String, _root_.play.api.libs.json.JsValue]] } yield Filter(expression, variables) } def jsObjectFilter(obj: de.nccloud.reporting.api.v0.models.Filter): play.api.libs.json.JsObject = { (obj.expression match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("expression" -> play.api.libs.json.JsString(x)) }) ++ (obj.variables match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("variables" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesReportingApiFilter: play.api.libs.json.Writes[Filter] = { (obj: de.nccloud.reporting.api.v0.models.Filter) => { de.nccloud.reporting.api.v0.models.json.jsObjectFilter(obj) } } implicit def jsonReadsReportingApiProjectionField : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ProjectionField] = { for { label <- (__ \ "label").readNullable[String] description <- (__ \ "description").readNullable[String] source <- (__ \ "source").readNullable[de.nccloud.reporting.api.v0.models.ProjectionFieldSource] fields <- (__ \ "fields").lazyReadNullable( play.api.libs.json.Reads.of[Map[String, de.nccloud.reporting.api.v0.models.ProjectionField]] ) } yield ProjectionField(label, description, source, fields) } def jsObjectProjectionField(obj: de.nccloud.reporting.api.v0.models.ProjectionField): play.api.libs.json.JsObject = { (obj.label match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("label" -> 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)) }) ++ (obj.source match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json .obj("source" -> de.nccloud.reporting.api.v0.models.json.jsObjectProjectionFieldSource(x)) }) ++ (obj.fields match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("fields" -> play.api.libs.json.Json.toJson(x)) }) } implicit def jsonWritesReportingApiProjectionField: play.api.libs.json.Writes[ProjectionField] = { (obj: de.nccloud.reporting.api.v0.models.ProjectionField) => { de.nccloud.reporting.api.v0.models.json.jsObjectProjectionField(obj) } } implicit def jsonReadsReportingApiProjectionFieldSource : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ProjectionFieldSource] = { for { topic <- (__ \ "topic").read[String] path <- (__ \ "path").read[String] filter <- (__ \ "filter").read[String] } yield ProjectionFieldSource(topic, path, filter) } def jsObjectProjectionFieldSource( obj: de.nccloud.reporting.api.v0.models.ProjectionFieldSource ): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "topic" -> play.api.libs.json.JsString(obj.topic), "path" -> play.api.libs.json.JsString(obj.path), "filter" -> play.api.libs.json.JsString(obj.filter) ) } implicit def jsonWritesReportingApiProjectionFieldSource: play.api.libs.json.Writes[ProjectionFieldSource] = { (obj: de.nccloud.reporting.api.v0.models.ProjectionFieldSource) => { de.nccloud.reporting.api.v0.models.json.jsObjectProjectionFieldSource(obj) } } implicit def jsonReadsReportingApiQueryForm : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.QueryForm] = { for { view <- (__ \ "view").readNullable[String] projection <- (__ \ "projection").readNullable[Map[String, de.nccloud.reporting.api.v0.models.ProjectionField]] variables <- (__ \ "variables").read[Map[String, _root_.play.api.libs.json.JsValue]] sort <- (__ \ "sort").readNullable[Seq[de.nccloud.common.v0.models.Sort]] } yield QueryForm(view, projection, variables, sort) } def jsObjectQueryForm(obj: de.nccloud.reporting.api.v0.models.QueryForm): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "variables" -> play.api.libs.json.Json.toJson(obj.variables) ) ++ (obj.view match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("view" -> play.api.libs.json.JsString(x)) }) ++ (obj.projection match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("projection" -> play.api.libs.json.Json.toJson(x)) }) ++ (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 jsonWritesReportingApiQueryForm: play.api.libs.json.Writes[QueryForm] = { (obj: de.nccloud.reporting.api.v0.models.QueryForm) => { de.nccloud.reporting.api.v0.models.json.jsObjectQueryForm(obj) } } implicit def jsonReadsReportingApiQueryResponse : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.QueryResponse] = { for { page <- (__ \ "page").read[de.nccloud.common.v0.models.PageResponse] data <- (__ \ "data").read[_root_.play.api.libs.json.JsObject] } yield QueryResponse(page, data) } def jsObjectQueryResponse(obj: de.nccloud.reporting.api.v0.models.QueryResponse): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "page" -> de.nccloud.common.v0.models.json.jsObjectPageResponse(obj.page), "data" -> obj.data ) } implicit def jsonWritesReportingApiQueryResponse: play.api.libs.json.Writes[QueryResponse] = { (obj: de.nccloud.reporting.api.v0.models.QueryResponse) => { de.nccloud.reporting.api.v0.models.json.jsObjectQueryResponse(obj) } } implicit def jsonReadsReportingApiTopic: play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.Topic] = { for { name <- (__ \ "name").read[String] service <- (__ \ "service").read[de.nccloud.common.v0.models.ServiceInfo] schema <- (__ \ "schema").read[Map[String, de.nccloud.reporting.api.v0.models.Field]] } yield Topic(name, service, schema) } def jsObjectTopic(obj: de.nccloud.reporting.api.v0.models.Topic): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "service" -> de.nccloud.common.v0.models.json.jsObjectServiceInfo(obj.service), "schema" -> play.api.libs.json.Json.toJson(obj.schema) ) } implicit def jsonWritesReportingApiTopic: play.api.libs.json.Writes[Topic] = { (obj: de.nccloud.reporting.api.v0.models.Topic) => { de.nccloud.reporting.api.v0.models.json.jsObjectTopic(obj) } } implicit def jsonReadsReportingApiTopicResponse : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.TopicResponse] = { for { page <- (__ \ "page").read[de.nccloud.common.v0.models.PageResponse] data <- (__ \ "data").read[Seq[de.nccloud.reporting.api.v0.models.Topic]] } yield TopicResponse(page, data) } def jsObjectTopicResponse(obj: de.nccloud.reporting.api.v0.models.TopicResponse): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "page" -> de.nccloud.common.v0.models.json.jsObjectPageResponse(obj.page), "data" -> play.api.libs.json.Json.toJson(obj.data) ) } implicit def jsonWritesReportingApiTopicResponse: play.api.libs.json.Writes[TopicResponse] = { (obj: de.nccloud.reporting.api.v0.models.TopicResponse) => { de.nccloud.reporting.api.v0.models.json.jsObjectTopicResponse(obj) } } implicit def jsonReadsReportingApiUpdateEvent : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.UpdateEvent] = { for { trackingId <- (__ \ "tracking_id").read[String] payload <- (__ \ "payload").read[_root_.play.api.libs.json.JsObject] audit <- (__ \ "audit").read[de.nccloud.common.v0.models.Audit] } yield UpdateEvent(trackingId, payload, audit) } def jsObjectUpdateEvent(obj: de.nccloud.reporting.api.v0.models.UpdateEvent): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "tracking_id" -> play.api.libs.json.JsString(obj.trackingId), "payload" -> obj.payload, "audit" -> de.nccloud.common.v0.models.json.jsObjectAudit(obj.audit) ) ++ play.api.libs.json.Json.obj("type" -> "update_event") } implicit def jsonWritesReportingApiUpdateEvent: play.api.libs.json.Writes[UpdateEvent] = { (obj: de.nccloud.reporting.api.v0.models.UpdateEvent) => { de.nccloud.reporting.api.v0.models.json.jsObjectUpdateEvent(obj) } } implicit def jsonReadsReportingApiView: play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.View] = { for { guid <- (__ \ "guid").read[_root_.java.util.UUID] name <- (__ \ "name").read[String] projection <- (__ \ "projection").read[Map[String, de.nccloud.reporting.api.v0.models.ProjectionField]] variables <- (__ \ "variables").read[Map[String, de.nccloud.reporting.api.v0.models.ScalarType]] } yield View(guid, name, projection, variables) } def jsObjectView(obj: de.nccloud.reporting.api.v0.models.View): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "guid" -> play.api.libs.json.JsString(obj.guid.toString), "name" -> play.api.libs.json.JsString(obj.name), "projection" -> play.api.libs.json.Json.toJson(obj.projection), "variables" -> play.api.libs.json.Json.toJson(obj.variables) ) } implicit def jsonWritesReportingApiView: play.api.libs.json.Writes[View] = { (obj: de.nccloud.reporting.api.v0.models.View) => { de.nccloud.reporting.api.v0.models.json.jsObjectView(obj) } } implicit def jsonReadsReportingApiViewForm: play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ViewForm] = { for { name <- (__ \ "name").read[String] projection <- (__ \ "projection").read[Map[String, de.nccloud.reporting.api.v0.models.ProjectionField]] variables <- (__ \ "variables").read[Map[String, de.nccloud.reporting.api.v0.models.ScalarType]] } yield ViewForm(name, projection, variables) } def jsObjectViewForm(obj: de.nccloud.reporting.api.v0.models.ViewForm): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "projection" -> play.api.libs.json.Json.toJson(obj.projection), "variables" -> play.api.libs.json.Json.toJson(obj.variables) ) } implicit def jsonWritesReportingApiViewForm: play.api.libs.json.Writes[ViewForm] = { (obj: de.nccloud.reporting.api.v0.models.ViewForm) => { de.nccloud.reporting.api.v0.models.json.jsObjectViewForm(obj) } } implicit def jsonReadsReportingApiViewResponse : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ViewResponse] = { for { page <- (__ \ "page").read[de.nccloud.common.v0.models.PageResponse] data <- (__ \ "data").read[Seq[de.nccloud.reporting.api.v0.models.View]] } yield ViewResponse(page, data) } def jsObjectViewResponse(obj: de.nccloud.reporting.api.v0.models.ViewResponse): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "page" -> de.nccloud.common.v0.models.json.jsObjectPageResponse(obj.page), "data" -> play.api.libs.json.Json.toJson(obj.data) ) } implicit def jsonWritesReportingApiViewResponse: play.api.libs.json.Writes[ViewResponse] = { (obj: de.nccloud.reporting.api.v0.models.ViewResponse) => { de.nccloud.reporting.api.v0.models.json.jsObjectViewResponse(obj) } } implicit def jsonReadsReportingApiReportingEvent : play.api.libs.json.Reads[de.nccloud.reporting.api.v0.models.ReportingEvent] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "update_event" => de.nccloud.reporting.api.v0.models.json.jsonReadsReportingApiUpdateEvent.reads(js) case "delete_event" => de.nccloud.reporting.api.v0.models.json.jsonReadsReportingApiDeleteEvent.reads(js) case other => play.api.libs.json.JsSuccess(de.nccloud.reporting.api.v0.models.ReportingEventUndefinedType(other)) } } (js \ "type").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectReportingEvent(obj: de.nccloud.reporting.api.v0.models.ReportingEvent): play.api.libs.json.JsObject = { obj match { case x: de.nccloud.reporting.api.v0.models.UpdateEvent => de.nccloud.reporting.api.v0.models.json.jsObjectUpdateEvent(x) case x: de.nccloud.reporting.api.v0.models.DeleteEvent => de.nccloud.reporting.api.v0.models.json.jsObjectDeleteEvent(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesReportingApiReportingEvent: play.api.libs.json.Writes[ReportingEvent] = { (obj: de.nccloud.reporting.api.v0.models.ReportingEvent) => { de.nccloud.reporting.api.v0.models.json.jsObjectReportingEvent(obj) } } }