/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.1 * User agent: apibuilder app.apibuilder.io/edsancha/medallia-api/0.0.1/ning_1_8_client */ package com.edsancha.medallia.api.v0.models { /** * Represents the question or fields to be filled by the user */ sealed trait ComponentUnion extends _root_.scala.Product with _root_.scala.Serializable { def componentUnionComponent: ComponentUnionComponent } /** * Defines the valid component values for the type ComponentUnion */ sealed trait ComponentUnionComponent extends _root_.scala.Product with _root_.scala.Serializable object ComponentUnionComponent { case object ComponentLabel extends ComponentUnionComponent { override def toString = "label" } case object ComponentImage extends ComponentUnionComponent { override def toString = "image" } case object ComponentNps extends ComponentUnionComponent { override def toString = "nps" } case object ComponentTextArea extends ComponentUnionComponent { override def toString = "textArea" } case object ComponentTextInput extends ComponentUnionComponent { override def toString = "textInput" } case object ComponentRadioSelector extends ComponentUnionComponent { override def toString = "radio" } case object ComponentCheckbox extends ComponentUnionComponent { override def toString = "checkbox" } case object ComponentDropdown extends ComponentUnionComponent { override def toString = "select" } case object ComponentGrading extends ComponentUnionComponent { override def toString = "grading" } case object ComponentGrading0to10 extends ComponentUnionComponent { override def toString = "grading0to10" } case object ComponentGrading1to10 extends ComponentUnionComponent { override def toString = "grading1to10" } final case class UNDEFINED(override val toString: String) extends ComponentUnionComponent val all: scala.List[ComponentUnionComponent] = scala.List(ComponentLabel, ComponentImage, ComponentNps, ComponentTextArea, ComponentTextInput, ComponentRadioSelector, ComponentCheckbox, ComponentDropdown, ComponentGrading, ComponentGrading0to10, ComponentGrading1to10) private val byName: Map[String, ComponentUnionComponent] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): ComponentUnionComponent = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[ComponentUnionComponent] = byName.get(value.toLowerCase) } /** * Represents the component or fields to be filled by the user */ sealed trait FeedbackUnion extends _root_.scala.Product with _root_.scala.Serializable { def feedbackUnionComponent: FeedbackUnionComponent } /** * Defines the valid component values for the type FeedbackUnion */ sealed trait FeedbackUnionComponent extends _root_.scala.Product with _root_.scala.Serializable object FeedbackUnionComponent { case object FeedbackNps extends FeedbackUnionComponent { override def toString = "nps" } case object FeedbackTextArea extends FeedbackUnionComponent { override def toString = "textArea" } case object FeedbackTextInput extends FeedbackUnionComponent { override def toString = "textInput" } case object FeedbackRadioSelector extends FeedbackUnionComponent { override def toString = "radio" } case object FeedbackCheckbox extends FeedbackUnionComponent { override def toString = "checkbox" } case object FeedbackDropdown extends FeedbackUnionComponent { override def toString = "select" } case object FeedbackGrading extends FeedbackUnionComponent { override def toString = "grading" } case object FeedbackGrading0to10 extends FeedbackUnionComponent { override def toString = "grading0to10" } case object FeedbackGrading1to10 extends FeedbackUnionComponent { override def toString = "grading1to10" } final case class UNDEFINED(override val toString: String) extends FeedbackUnionComponent val all: scala.List[FeedbackUnionComponent] = scala.List(FeedbackNps, FeedbackTextArea, FeedbackTextInput, FeedbackRadioSelector, FeedbackCheckbox, FeedbackDropdown, FeedbackGrading, FeedbackGrading0to10, FeedbackGrading1to10) private val byName: Map[String, FeedbackUnionComponent] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): FeedbackUnionComponent = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[FeedbackUnionComponent] = byName.get(value.toLowerCase) } /** * JWT Access Token to be used to access the APIe * * @param accessToken JWT Access Token to be used to access the API */ final case class AccessTokenWrapper( accessToken: String ) /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param label Component label * @param options Maximum number of characters * @param description Component description */ final case class ComponentCheckbox( index: Int, id: Int, uniqueName: String, required: Boolean, label: String, options: Seq[String], description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentCheckbox } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param placeholder Component placeholder * @param label Component label * @param options Maximum number of characters * @param description Component description */ final case class ComponentDropdown( index: Int, id: Int, uniqueName: String, required: Boolean, placeholder: String, label: String, options: Seq[String], description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentDropdown } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param label Component label * @param ratingViewType Rating View Type * @param description Component description */ final case class ComponentGrading( index: Int, id: Int, uniqueName: String, required: Boolean, label: String, ratingViewType: com.edsancha.medallia.api.v0.models.RatingViewType = com.edsancha.medallia.api.v0.models.RatingViewType.GradingSlider, description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentGrading } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param label Component label * @param ratingViewType Rating View Type * @param description Component description */ final case class ComponentGrading0to10( index: Int, id: Int, uniqueName: String, required: Boolean, label: String, ratingViewType: com.edsancha.medallia.api.v0.models.RatingViewType = com.edsancha.medallia.api.v0.models.RatingViewType.GradingSlider, description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentGrading0to10 } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param label Component label * @param ratingViewType Rating View Type * @param description Component description */ final case class ComponentGrading1to10( index: Int, id: Int, uniqueName: String, required: Boolean, label: String, ratingViewType: com.edsancha.medallia.api.v0.models.RatingViewType = com.edsancha.medallia.api.v0.models.RatingViewType.GradingSlider, description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentGrading1to10 } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param imageObject Image Object uploaded to Medallia, if it's a copy of a previous survey this * field doesnt' show up * @param uploadedResource Image Object from a copied survey, it only shows when imageObject is not present */ final case class ComponentImage( index: Int, id: Int, uniqueName: String, imageObject: _root_.scala.Option[com.edsancha.medallia.api.v0.models.Image] = None, uploadedResource: _root_.scala.Option[com.edsancha.medallia.api.v0.models.Image] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentImage } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param labelContent Label Content * @param numOfLines Label Number of Lines */ final case class ComponentLabel( index: Int, id: Int, uniqueName: String, labelContent: _root_.scala.Option[String] = None, numOfLines: Int = 2 ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentLabel } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param label Component placeholder * @param description Component description * @param ratingViewType Rating View Type */ final case class ComponentNps( index: Int, id: Int, uniqueName: String, required: Boolean, label: String, description: _root_.scala.Option[String] = None, ratingViewType: com.edsancha.medallia.api.v0.models.RatingViewType = com.edsancha.medallia.api.v0.models.RatingViewType.Slide ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentNps } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param label Component label * @param options Maximum number of characters * @param description Component description */ final case class ComponentRadioSelector( index: Int, id: Int, uniqueName: String, required: Boolean, label: String, options: Seq[String], description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentRadioSelector } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param placeholder Component placeholder * @param label Component placeholder * @param numOfLines Number of lines, string parameter though (-‸ლ) * @param description Component description */ final case class ComponentTextArea( index: Int, id: Int, uniqueName: String, required: Boolean, placeholder: String, label: String, numOfLines: Int = 2, description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentTextArea } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param required Component required * @param placeholder Component placeholder * @param label Component label * @param maxChars Maximum number of characters * @param description Component description */ final case class ComponentTextInput( index: Int, id: Int, uniqueName: String, required: Boolean, placeholder: String, label: String, maxChars: Int = 200, description: _root_.scala.Option[String] = None ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.ComponentTextInput } /** * Configuration main object, including forms * * @param propertyId Account id * @param feedbackSubmitUrl url * @param forms Definition and configuration of forms that were created in the command center */ final case class Configuration( propertyId: Int, feedbackSubmitUrl: String, forms: Seq[com.edsancha.medallia.api.v0.models.Form] ) /** * @param index Component index * @param id Component id * @param required Component required * @param component Component type * @param uniqueName Component unique name * @param placeholder Component placeholder * @param label Component placeholder * @param description Component description * @param options Options available if required * @param imageObject Image if required */ final case class DynamicData( index: Int, id: Int, required: Boolean, component: String, uniqueName: String, placeholder: String, label: String, description: _root_.scala.Option[String] = None, options: _root_.scala.Option[Seq[String]] = None, imageObject: _root_.scala.Option[com.edsancha.medallia.api.v0.models.Image] = None ) /** * Feedback main object with survey's results * * @param formId The submitted form id (from the configuration). * @param dynamicData Survey Feedback Data */ final case class Feedback( formId: Int, dynamicData: com.edsancha.medallia.api.v0.models.FeedbackData ) /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Checkbox selected value * @param `type` Component feedback type */ final case class FeedbackCheckbox( index: Int, id: Int, uniqueName: String, value: Seq[Int], `type`: String = "checkbox" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackCheckbox } /** * Object that will hold the form pages and custom parameters. * * @param customParams List of survey's pages results * @param pages List of survey's pages results */ final case class FeedbackData( customParams: _root_.scala.Option[_root_.play.api.libs.json.JsValue] = None, pages: Seq[com.edsancha.medallia.api.v0.models.FeedbackPage] ) /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Dropdown selected value * @param `type` Component feedback type */ final case class FeedbackDropdown( index: Int, id: Int, uniqueName: String, value: Int, `type`: String = "select" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackDropdown } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Grading selected value * @param `type` Component feedback type */ final case class FeedbackGrading( index: Int, id: Int, uniqueName: String, value: Int, `type`: String = "grading" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackGrading } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Grading selected value * @param `type` Component feedback type */ final case class FeedbackGrading0to10( index: Int, id: Int, uniqueName: String, value: Int, `type`: String = "grading0to10" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackGrading0to10 } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Grading selected value * @param `type` Component feedback type */ final case class FeedbackGrading1to10( index: Int, id: Int, uniqueName: String, value: Int, `type`: String = "grading1to10" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackGrading1to10 } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value NPS selected value * @param `type` Component feedback type */ final case class FeedbackNps( index: Int, id: Int, uniqueName: String, value: Int, `type`: String = "nps" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackNps } /** * Object that will hold the form page * * @param components List of survey's pages results */ final case class FeedbackPage( components: Seq[com.edsancha.medallia.api.v0.models.FeedbackUnion] ) /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Radio Selected Value * @param `type` Component feedback type */ final case class FeedbackRadioSelector( index: Int, id: Int, uniqueName: String, value: Int, `type`: String = "radio" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackRadioSelector } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Text Area Content * @param `type` Component feedback type */ final case class FeedbackTextArea( index: Int, id: Int, uniqueName: String, value: String, `type`: String = "textArea" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackTextArea } /** * @param index Component index * @param id Component id * @param uniqueName Unique name * @param value Text Area Content * @param `type` Component feedback type */ final case class FeedbackTextInput( index: Int, id: Int, uniqueName: String, value: String, `type`: String = "textInput" ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.FeedbackTextInput } /** * @param formId Form Identifier * @param name Form name * @param title Form title * @param formType Form type * @param inviteData Invitation data * @param triggerData Invitation trigger conditions * @param formJson Wrapper around form data */ final case class Form( formId: Int, name: String, title: String, formType: com.edsancha.medallia.api.v0.models.FormType, inviteData: _root_.scala.Option[com.edsancha.medallia.api.v0.models.InviteData] = None, triggerData: _root_.scala.Option[com.edsancha.medallia.api.v0.models.TriggerData] = None, formJson: com.edsancha.medallia.api.v0.models.FormJson ) /** * @param pages Form Page */ final case class FormJson( pages: Seq[com.edsancha.medallia.api.v0.models.Page] ) /** * @param name Image Name * @param url Image Url */ final case class Image( name: String, url: String ) /** * @param invitationHeadline Invitation Headline * @param invitationText Invitation Text * @param provideButtonText Provide feedback button text * @param declineButtonText Decline provide feedback button text * @param laterButtonText Provide feedback later button text */ final case class InviteData( invitationHeadline: String, invitationText: String, provideButtonText: String, declineButtonText: String, laterButtonText: String ) /** * @param number Number of app sessions * @param compareString Compare String */ final case class NumberOfAppSession( number: String, compareString: com.edsancha.medallia.api.v0.models.CompareString ) /** * @param days Don't invite a visitor who submitted feedback in the past x days */ final case class NumberOfDays( days: String ) /** * @param name Page name * @param index Page index */ final case class Page( name: String, index: Int = 0, dynamicData: Seq[com.edsancha.medallia.api.v0.models.ComponentUnion] ) /** * @param prec Don't invite a visitor who submitted feedback in the past x days */ final case class PercentageOfSessions( prec: String ) /** * @param time Time in Foreground, in seconds * @param compareString Compare String */ final case class TimeInForeground( time: String, compareString: com.edsancha.medallia.api.v0.models.CompareString ) /** * @param numberOfAppSession Number of App Sessions to show the invite, with compare string * @param timeInForeground App Time in foreground in seconds to show the invite, with compare string * @param mobileappVersion Mobile App Versions * @param submitted Don't invite a visitor who submitted feedback in the past x days * @param declined Don't invite a visitor who declined an invitation in the past x days * @param mobileosVersion Mobile App Versions * @param percentageOfSessions Invite to this percentage of sessions * @param genericRule Set of generic rules creates in the invitation settings */ final case class TriggerData( numberOfAppSession: _root_.scala.Option[com.edsancha.medallia.api.v0.models.NumberOfAppSession] = None, timeInForeground: _root_.scala.Option[com.edsancha.medallia.api.v0.models.TimeInForeground] = None, mobileappVersion: _root_.scala.Option[Seq[String]] = None, submitted: _root_.scala.Option[com.edsancha.medallia.api.v0.models.NumberOfDays] = None, declined: _root_.scala.Option[com.edsancha.medallia.api.v0.models.NumberOfDays] = None, mobileosVersion: _root_.scala.Option[Seq[String]] = None, percentageOfSessions: _root_.scala.Option[com.edsancha.medallia.api.v0.models.PercentageOfSessions] = None, genericRule: _root_.scala.Option[String] = None ) /** * Provides future compatibility in clients - in the future, when a type is added * to the union ComponentUnion, it will need to be handled in the client code. This * implementation will deserialize these future types as an instance of this class. * * @param description Information about the type that we received that is undefined in this version of * the client. */ final case class ComponentUnionUndefinedType( description: String ) extends ComponentUnion { override val componentUnionComponent: ComponentUnionComponent = ComponentUnionComponent.UNDEFINED(description) } /** * Provides future compatibility in clients - in the future, when a type is added * to the union FeedbackUnion, it will need to be handled in the client code. This * implementation will deserialize these future types as an instance of this class. * * @param description Information about the type that we received that is undefined in this version of * the client. */ final case class FeedbackUnionUndefinedType( description: String ) extends FeedbackUnion { override val feedbackUnionComponent: FeedbackUnionComponent = FeedbackUnionComponent.UNDEFINED(description) } sealed trait CompareString extends _root_.scala.Product with _root_.scala.Serializable object CompareString { case object GreaterThan extends CompareString { override def toString = "greaterThan" } case object Equals extends CompareString { override def toString = "equals" } case object SmallerThan extends CompareString { override def toString = "smallerThan" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends CompareString /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[CompareString] = scala.List(GreaterThan, Equals, SmallerThan) private val byName: Map[String, CompareString] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): CompareString = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[CompareString] = byName.get(value.toLowerCase) } sealed trait FormType extends _root_.scala.Product with _root_.scala.Serializable object FormType { case object MobileInvitation extends FormType { override def toString = "mobileInvitation" } case object Code extends FormType { override def toString = "code" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends FormType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[FormType] = scala.List(MobileInvitation, Code) private val byName: Map[String, FormType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): FormType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[FormType] = byName.get(value.toLowerCase) } sealed trait RatingViewType extends _root_.scala.Product with _root_.scala.Serializable object RatingViewType { case object Slide extends RatingViewType { override def toString = "slide" } case object NumbersSquare extends RatingViewType { override def toString = "numbersSquare" } case object GradingSlider extends RatingViewType { override def toString = "gradingSlider" } case object GradingDropdown extends RatingViewType { override def toString = "gradingDropdown" } case object Stars extends RatingViewType { override def toString = "stars" } case object Emoticons extends RatingViewType { override def toString = "emoticons" } case object Numbers extends RatingViewType { override def toString = "numbers" } case object Smilies extends RatingViewType { override def toString = "smilies" } case object Bars extends RatingViewType { override def toString = "bars" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious to users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends RatingViewType /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[RatingViewType] = scala.List(Slide, NumbersSquare, GradingSlider, GradingDropdown, Stars, Emoticons, Numbers, Smilies, Bars) private val byName: Map[String, RatingViewType] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): RatingViewType = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[RatingViewType] = byName.get(value.toLowerCase) } } package com.edsancha.medallia.api.v0.models { package object json { import play.api.libs.json.__ import play.api.libs.json.JsString import play.api.libs.json.Writes import play.api.libs.functional.syntax._ import com.edsancha.medallia.api.v0.models.json._ import com.edsancha.survey.models.v0.models.json._ private[v0] implicit val jsonReadsUUID: play.api.libs.json.Reads[_root_.java.util.UUID] = __.read[String].map { str => _root_.java.util.UUID.fromString(str) } private[v0] implicit val jsonWritesUUID: play.api.libs.json.Writes[_root_.java.util.UUID] = (x: _root_.java.util.UUID) => play.api.libs.json.JsString(x.toString) private[v0] implicit val jsonReadsJodaDateTime: play.api.libs.json.Reads[_root_.org.joda.time.DateTime] = __.read[String].map { str => _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseDateTime(str) } private[v0] implicit val jsonWritesJodaDateTime: play.api.libs.json.Writes[_root_.org.joda.time.DateTime] = (x: _root_.org.joda.time.DateTime) => { play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.dateTime.print(x)) } private[v0] implicit val jsonReadsJodaLocalDate: play.api.libs.json.Reads[_root_.org.joda.time.LocalDate] = __.read[String].map { str => _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseLocalDate(str) } private[v0] implicit val jsonWritesJodaLocalDate: play.api.libs.json.Writes[_root_.org.joda.time.LocalDate] = (x: _root_.org.joda.time.LocalDate) => { play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.date.print(x)) } implicit val jsonReadsMedalliaApiCompareString: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.CompareString] = new play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.CompareString] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[com.edsancha.medallia.api.v0.models.CompareString] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.CompareString(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.CompareString(v)) case _: play.api.libs.json.JsError => (js \ "compareString").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.CompareString(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesMedalliaApiCompareString(obj: com.edsancha.medallia.api.v0.models.CompareString) = { play.api.libs.json.JsString(obj.toString) } def jsObjectCompareString(obj: com.edsancha.medallia.api.v0.models.CompareString) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesMedalliaApiCompareString: play.api.libs.json.Writes[CompareString] = { (obj: com.edsancha.medallia.api.v0.models.CompareString) => { com.edsancha.medallia.api.v0.models.json.jsonWritesMedalliaApiCompareString(obj) } } implicit val jsonReadsMedalliaApiFormType: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FormType] = new play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FormType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[com.edsancha.medallia.api.v0.models.FormType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.FormType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.FormType(v)) case _: play.api.libs.json.JsError => (js \ "formType").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.FormType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesMedalliaApiFormType(obj: com.edsancha.medallia.api.v0.models.FormType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectFormType(obj: com.edsancha.medallia.api.v0.models.FormType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesMedalliaApiFormType: play.api.libs.json.Writes[FormType] = { (obj: com.edsancha.medallia.api.v0.models.FormType) => { com.edsancha.medallia.api.v0.models.json.jsonWritesMedalliaApiFormType(obj) } } implicit val jsonReadsMedalliaApiRatingViewType: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.RatingViewType] = new play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.RatingViewType] { def reads(js: play.api.libs.json.JsValue): play.api.libs.json.JsResult[com.edsancha.medallia.api.v0.models.RatingViewType] = { js match { case v: play.api.libs.json.JsString => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.RatingViewType(v.value)) case _ => { (js \ "value").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.RatingViewType(v)) case _: play.api.libs.json.JsError => (js \ "ratingViewType").validate[String] match { case play.api.libs.json.JsSuccess(v, _) => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.RatingViewType(v)) case err: play.api.libs.json.JsError => err } } } } } } def jsonWritesMedalliaApiRatingViewType(obj: com.edsancha.medallia.api.v0.models.RatingViewType) = { play.api.libs.json.JsString(obj.toString) } def jsObjectRatingViewType(obj: com.edsancha.medallia.api.v0.models.RatingViewType) = { play.api.libs.json.Json.obj("value" -> play.api.libs.json.JsString(obj.toString)) } implicit def jsonWritesMedalliaApiRatingViewType: play.api.libs.json.Writes[RatingViewType] = { (obj: com.edsancha.medallia.api.v0.models.RatingViewType) => { com.edsancha.medallia.api.v0.models.json.jsonWritesMedalliaApiRatingViewType(obj) } } implicit def jsonReadsMedalliaApiAccessTokenWrapper: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.AccessTokenWrapper] = { (__ \ "accessToken").read[String].map { x => AccessTokenWrapper(accessToken = x) } } def jsObjectAccessTokenWrapper(obj: com.edsancha.medallia.api.v0.models.AccessTokenWrapper): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "accessToken" -> play.api.libs.json.JsString(obj.accessToken) ) } implicit def jsonWritesMedalliaApiAccessTokenWrapper: play.api.libs.json.Writes[AccessTokenWrapper] = { (obj: com.edsancha.medallia.api.v0.models.AccessTokenWrapper) => { com.edsancha.medallia.api.v0.models.json.jsObjectAccessTokenWrapper(obj) } } implicit def jsonReadsMedalliaApiComponentCheckbox: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentCheckbox] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] label <- (__ \ "label").read[String] options <- (__ \ "options").read[Seq[String]] description <- (__ \ "description").readNullable[String] } yield ComponentCheckbox(index, id, uniqueName, required, label, options, description) } def jsObjectComponentCheckbox(obj: com.edsancha.medallia.api.v0.models.ComponentCheckbox): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "label" -> play.api.libs.json.JsString(obj.label), "options" -> play.api.libs.json.Json.toJson(obj.options) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "checkbox") } implicit def jsonWritesMedalliaApiComponentCheckbox: play.api.libs.json.Writes[ComponentCheckbox] = { (obj: com.edsancha.medallia.api.v0.models.ComponentCheckbox) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentCheckbox(obj) } } implicit def jsonReadsMedalliaApiComponentDropdown: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentDropdown] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] placeholder <- (__ \ "placeholder").read[String] label <- (__ \ "label").read[String] options <- (__ \ "options").read[Seq[String]] description <- (__ \ "description").readNullable[String] } yield ComponentDropdown(index, id, uniqueName, required, placeholder, label, options, description) } def jsObjectComponentDropdown(obj: com.edsancha.medallia.api.v0.models.ComponentDropdown): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "placeholder" -> play.api.libs.json.JsString(obj.placeholder), "label" -> play.api.libs.json.JsString(obj.label), "options" -> play.api.libs.json.Json.toJson(obj.options) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "select") } implicit def jsonWritesMedalliaApiComponentDropdown: play.api.libs.json.Writes[ComponentDropdown] = { (obj: com.edsancha.medallia.api.v0.models.ComponentDropdown) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentDropdown(obj) } } implicit def jsonReadsMedalliaApiComponentGrading: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentGrading] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] label <- (__ \ "label").read[String] ratingViewType <- (__ \ "ratingViewType").read[com.edsancha.medallia.api.v0.models.RatingViewType] description <- (__ \ "description").readNullable[String] } yield ComponentGrading(index, id, uniqueName, required, label, ratingViewType, description) } def jsObjectComponentGrading(obj: com.edsancha.medallia.api.v0.models.ComponentGrading): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "label" -> play.api.libs.json.JsString(obj.label), "ratingViewType" -> play.api.libs.json.JsString(obj.ratingViewType.toString) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "grading") } implicit def jsonWritesMedalliaApiComponentGrading: play.api.libs.json.Writes[ComponentGrading] = { (obj: com.edsancha.medallia.api.v0.models.ComponentGrading) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentGrading(obj) } } implicit def jsonReadsMedalliaApiComponentGrading0to10: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentGrading0to10] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] label <- (__ \ "label").read[String] ratingViewType <- (__ \ "ratingViewType").read[com.edsancha.medallia.api.v0.models.RatingViewType] description <- (__ \ "description").readNullable[String] } yield ComponentGrading0to10(index, id, uniqueName, required, label, ratingViewType, description) } def jsObjectComponentGrading0to10(obj: com.edsancha.medallia.api.v0.models.ComponentGrading0to10): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "label" -> play.api.libs.json.JsString(obj.label), "ratingViewType" -> play.api.libs.json.JsString(obj.ratingViewType.toString) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "grading0to10") } implicit def jsonWritesMedalliaApiComponentGrading0to10: play.api.libs.json.Writes[ComponentGrading0to10] = { (obj: com.edsancha.medallia.api.v0.models.ComponentGrading0to10) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentGrading0to10(obj) } } implicit def jsonReadsMedalliaApiComponentGrading1to10: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentGrading1to10] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] label <- (__ \ "label").read[String] ratingViewType <- (__ \ "ratingViewType").read[com.edsancha.medallia.api.v0.models.RatingViewType] description <- (__ \ "description").readNullable[String] } yield ComponentGrading1to10(index, id, uniqueName, required, label, ratingViewType, description) } def jsObjectComponentGrading1to10(obj: com.edsancha.medallia.api.v0.models.ComponentGrading1to10): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "label" -> play.api.libs.json.JsString(obj.label), "ratingViewType" -> play.api.libs.json.JsString(obj.ratingViewType.toString) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "grading1to10") } implicit def jsonWritesMedalliaApiComponentGrading1to10: play.api.libs.json.Writes[ComponentGrading1to10] = { (obj: com.edsancha.medallia.api.v0.models.ComponentGrading1to10) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentGrading1to10(obj) } } implicit def jsonReadsMedalliaApiComponentImage: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentImage] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] imageObject <- (__ \ "imageObject").readNullable[com.edsancha.medallia.api.v0.models.Image] uploadedResource <- (__ \ "uploadedResource").readNullable[com.edsancha.medallia.api.v0.models.Image] } yield ComponentImage(index, id, uniqueName, imageObject, uploadedResource) } def jsObjectComponentImage(obj: com.edsancha.medallia.api.v0.models.ComponentImage): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName) ) ++ (obj.imageObject match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("imageObject" -> com.edsancha.medallia.api.v0.models.json.jsObjectImage(x)) }) ++ (obj.uploadedResource match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("uploadedResource" -> com.edsancha.medallia.api.v0.models.json.jsObjectImage(x)) }) ++ play.api.libs.json.Json.obj("component" -> "image") } implicit def jsonWritesMedalliaApiComponentImage: play.api.libs.json.Writes[ComponentImage] = { (obj: com.edsancha.medallia.api.v0.models.ComponentImage) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentImage(obj) } } implicit def jsonReadsMedalliaApiComponentLabel: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentLabel] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] labelContent <- (__ \ "labelContent").readNullable[String] numOfLines <- (__ \ "num_of_lines").read[Int] } yield ComponentLabel(index, id, uniqueName, labelContent, numOfLines) } def jsObjectComponentLabel(obj: com.edsancha.medallia.api.v0.models.ComponentLabel): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "num_of_lines" -> play.api.libs.json.JsNumber(obj.numOfLines) ) ++ (obj.labelContent match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("labelContent" -> play.api.libs.json.JsString(x)) }) ++ play.api.libs.json.Json.obj("component" -> "label") } implicit def jsonWritesMedalliaApiComponentLabel: play.api.libs.json.Writes[ComponentLabel] = { (obj: com.edsancha.medallia.api.v0.models.ComponentLabel) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentLabel(obj) } } implicit def jsonReadsMedalliaApiComponentNps: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentNps] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] label <- (__ \ "label").read[String] description <- (__ \ "description").readNullable[String] ratingViewType <- (__ \ "ratingViewType").read[com.edsancha.medallia.api.v0.models.RatingViewType] } yield ComponentNps(index, id, uniqueName, required, label, description, ratingViewType) } def jsObjectComponentNps(obj: com.edsancha.medallia.api.v0.models.ComponentNps): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "label" -> play.api.libs.json.JsString(obj.label), "ratingViewType" -> play.api.libs.json.JsString(obj.ratingViewType.toString) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "nps") } implicit def jsonWritesMedalliaApiComponentNps: play.api.libs.json.Writes[ComponentNps] = { (obj: com.edsancha.medallia.api.v0.models.ComponentNps) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentNps(obj) } } implicit def jsonReadsMedalliaApiComponentRadioSelector: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentRadioSelector] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] label <- (__ \ "label").read[String] options <- (__ \ "options").read[Seq[String]] description <- (__ \ "description").readNullable[String] } yield ComponentRadioSelector(index, id, uniqueName, required, label, options, description) } def jsObjectComponentRadioSelector(obj: com.edsancha.medallia.api.v0.models.ComponentRadioSelector): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "label" -> play.api.libs.json.JsString(obj.label), "options" -> play.api.libs.json.Json.toJson(obj.options) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "radio") } implicit def jsonWritesMedalliaApiComponentRadioSelector: play.api.libs.json.Writes[ComponentRadioSelector] = { (obj: com.edsancha.medallia.api.v0.models.ComponentRadioSelector) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentRadioSelector(obj) } } implicit def jsonReadsMedalliaApiComponentTextArea: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentTextArea] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] placeholder <- (__ \ "placeholder").read[String] label <- (__ \ "label").read[String] numOfLines <- (__ \ "num_of_lines").read[Int] description <- (__ \ "description").readNullable[String] } yield ComponentTextArea(index, id, uniqueName, required, placeholder, label, numOfLines, description) } def jsObjectComponentTextArea(obj: com.edsancha.medallia.api.v0.models.ComponentTextArea): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "placeholder" -> play.api.libs.json.JsString(obj.placeholder), "label" -> play.api.libs.json.JsString(obj.label), "num_of_lines" -> play.api.libs.json.JsNumber(obj.numOfLines) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "textArea") } implicit def jsonWritesMedalliaApiComponentTextArea: play.api.libs.json.Writes[ComponentTextArea] = { (obj: com.edsancha.medallia.api.v0.models.ComponentTextArea) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentTextArea(obj) } } implicit def jsonReadsMedalliaApiComponentTextInput: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentTextInput] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] required <- (__ \ "required").read[Boolean] placeholder <- (__ \ "placeholder").read[String] label <- (__ \ "label").read[String] maxChars <- (__ \ "max_chars").read[Int] description <- (__ \ "description").readNullable[String] } yield ComponentTextInput(index, id, uniqueName, required, placeholder, label, maxChars, description) } def jsObjectComponentTextInput(obj: com.edsancha.medallia.api.v0.models.ComponentTextInput): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "required" -> play.api.libs.json.JsBoolean(obj.required), "placeholder" -> play.api.libs.json.JsString(obj.placeholder), "label" -> play.api.libs.json.JsString(obj.label), "max_chars" -> play.api.libs.json.JsNumber(obj.maxChars) ) ++ (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)) }) ++ play.api.libs.json.Json.obj("component" -> "textInput") } implicit def jsonWritesMedalliaApiComponentTextInput: play.api.libs.json.Writes[ComponentTextInput] = { (obj: com.edsancha.medallia.api.v0.models.ComponentTextInput) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentTextInput(obj) } } implicit def jsonReadsMedalliaApiConfiguration: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.Configuration] = { for { propertyId <- (__ \ "propertyId").read[Int] feedbackSubmitUrl <- (__ \ "feedbackSubmitUrl").read[String] forms <- (__ \ "forms").read[Seq[com.edsancha.medallia.api.v0.models.Form]] } yield Configuration(propertyId, feedbackSubmitUrl, forms) } def jsObjectConfiguration(obj: com.edsancha.medallia.api.v0.models.Configuration): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "propertyId" -> play.api.libs.json.JsNumber(obj.propertyId), "feedbackSubmitUrl" -> play.api.libs.json.JsString(obj.feedbackSubmitUrl), "forms" -> play.api.libs.json.Json.toJson(obj.forms) ) } implicit def jsonWritesMedalliaApiConfiguration: play.api.libs.json.Writes[Configuration] = { (obj: com.edsancha.medallia.api.v0.models.Configuration) => { com.edsancha.medallia.api.v0.models.json.jsObjectConfiguration(obj) } } implicit def jsonReadsMedalliaApiDynamicData: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.DynamicData] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] required <- (__ \ "required").read[Boolean] component <- (__ \ "component").read[String] uniqueName <- (__ \ "unique_name").read[String] placeholder <- (__ \ "placeholder").read[String] label <- (__ \ "label").read[String] description <- (__ \ "description").readNullable[String] options <- (__ \ "options").readNullable[Seq[String]] imageObject <- (__ \ "imageObject").readNullable[com.edsancha.medallia.api.v0.models.Image] } yield DynamicData(index, id, required, component, uniqueName, placeholder, label, description, options, imageObject) } def jsObjectDynamicData(obj: com.edsancha.medallia.api.v0.models.DynamicData): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "required" -> play.api.libs.json.JsBoolean(obj.required), "component" -> play.api.libs.json.JsString(obj.component), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "placeholder" -> play.api.libs.json.JsString(obj.placeholder), "label" -> play.api.libs.json.JsString(obj.label) ) ++ (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.options match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("options" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.imageObject match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("imageObject" -> com.edsancha.medallia.api.v0.models.json.jsObjectImage(x)) }) } implicit def jsonWritesMedalliaApiDynamicData: play.api.libs.json.Writes[DynamicData] = { (obj: com.edsancha.medallia.api.v0.models.DynamicData) => { com.edsancha.medallia.api.v0.models.json.jsObjectDynamicData(obj) } } implicit def jsonReadsMedalliaApiFeedback: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.Feedback] = { for { formId <- (__ \ "formId").read[Int] dynamicData <- (__ \ "dynamicData").read[com.edsancha.medallia.api.v0.models.FeedbackData] } yield Feedback(formId, dynamicData) } def jsObjectFeedback(obj: com.edsancha.medallia.api.v0.models.Feedback): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "formId" -> play.api.libs.json.JsNumber(obj.formId), "dynamicData" -> com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackData(obj.dynamicData) ) } implicit def jsonWritesMedalliaApiFeedback: play.api.libs.json.Writes[Feedback] = { (obj: com.edsancha.medallia.api.v0.models.Feedback) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedback(obj) } } implicit def jsonReadsMedalliaApiFeedbackCheckbox: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackCheckbox] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Seq[Int]] `type` <- (__ \ "type").read[String] } yield FeedbackCheckbox(index, id, uniqueName, value, `type`) } def jsObjectFeedbackCheckbox(obj: com.edsancha.medallia.api.v0.models.FeedbackCheckbox): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.Json.toJson(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "checkbox") } implicit def jsonWritesMedalliaApiFeedbackCheckbox: play.api.libs.json.Writes[FeedbackCheckbox] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackCheckbox) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackCheckbox(obj) } } implicit def jsonReadsMedalliaApiFeedbackData: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackData] = { for { customParams <- (__ \ "customParams").readNullable[_root_.play.api.libs.json.JsValue] pages <- (__ \ "pages").read[Seq[com.edsancha.medallia.api.v0.models.FeedbackPage]] } yield FeedbackData(customParams, pages) } def jsObjectFeedbackData(obj: com.edsancha.medallia.api.v0.models.FeedbackData): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "pages" -> play.api.libs.json.Json.toJson(obj.pages) ) ++ (obj.customParams match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("customParams" -> x) }) } implicit def jsonWritesMedalliaApiFeedbackData: play.api.libs.json.Writes[FeedbackData] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackData) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackData(obj) } } implicit def jsonReadsMedalliaApiFeedbackDropdown: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackDropdown] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Int] `type` <- (__ \ "type").read[String] } yield FeedbackDropdown(index, id, uniqueName, value, `type`) } def jsObjectFeedbackDropdown(obj: com.edsancha.medallia.api.v0.models.FeedbackDropdown): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsNumber(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "select") } implicit def jsonWritesMedalliaApiFeedbackDropdown: play.api.libs.json.Writes[FeedbackDropdown] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackDropdown) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackDropdown(obj) } } implicit def jsonReadsMedalliaApiFeedbackGrading: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackGrading] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Int] `type` <- (__ \ "type").read[String] } yield FeedbackGrading(index, id, uniqueName, value, `type`) } def jsObjectFeedbackGrading(obj: com.edsancha.medallia.api.v0.models.FeedbackGrading): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsNumber(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "grading") } implicit def jsonWritesMedalliaApiFeedbackGrading: play.api.libs.json.Writes[FeedbackGrading] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackGrading) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackGrading(obj) } } implicit def jsonReadsMedalliaApiFeedbackGrading0to10: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackGrading0to10] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Int] `type` <- (__ \ "type").read[String] } yield FeedbackGrading0to10(index, id, uniqueName, value, `type`) } def jsObjectFeedbackGrading0to10(obj: com.edsancha.medallia.api.v0.models.FeedbackGrading0to10): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsNumber(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "grading0to10") } implicit def jsonWritesMedalliaApiFeedbackGrading0to10: play.api.libs.json.Writes[FeedbackGrading0to10] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackGrading0to10) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackGrading0to10(obj) } } implicit def jsonReadsMedalliaApiFeedbackGrading1to10: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackGrading1to10] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Int] `type` <- (__ \ "type").read[String] } yield FeedbackGrading1to10(index, id, uniqueName, value, `type`) } def jsObjectFeedbackGrading1to10(obj: com.edsancha.medallia.api.v0.models.FeedbackGrading1to10): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsNumber(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "grading1to10") } implicit def jsonWritesMedalliaApiFeedbackGrading1to10: play.api.libs.json.Writes[FeedbackGrading1to10] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackGrading1to10) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackGrading1to10(obj) } } implicit def jsonReadsMedalliaApiFeedbackNps: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackNps] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Int] `type` <- (__ \ "type").read[String] } yield FeedbackNps(index, id, uniqueName, value, `type`) } def jsObjectFeedbackNps(obj: com.edsancha.medallia.api.v0.models.FeedbackNps): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsNumber(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "nps") } implicit def jsonWritesMedalliaApiFeedbackNps: play.api.libs.json.Writes[FeedbackNps] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackNps) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackNps(obj) } } implicit def jsonReadsMedalliaApiFeedbackPage: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackPage] = { (__ \ "components").read[Seq[com.edsancha.medallia.api.v0.models.FeedbackUnion]].map { x => FeedbackPage(components = x) } } def jsObjectFeedbackPage(obj: com.edsancha.medallia.api.v0.models.FeedbackPage): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "components" -> play.api.libs.json.Json.toJson(obj.components) ) } implicit def jsonWritesMedalliaApiFeedbackPage: play.api.libs.json.Writes[FeedbackPage] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackPage) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackPage(obj) } } implicit def jsonReadsMedalliaApiFeedbackRadioSelector: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackRadioSelector] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[Int] `type` <- (__ \ "type").read[String] } yield FeedbackRadioSelector(index, id, uniqueName, value, `type`) } def jsObjectFeedbackRadioSelector(obj: com.edsancha.medallia.api.v0.models.FeedbackRadioSelector): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsNumber(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "radio") } implicit def jsonWritesMedalliaApiFeedbackRadioSelector: play.api.libs.json.Writes[FeedbackRadioSelector] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackRadioSelector) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackRadioSelector(obj) } } implicit def jsonReadsMedalliaApiFeedbackTextArea: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackTextArea] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[String] `type` <- (__ \ "type").read[String] } yield FeedbackTextArea(index, id, uniqueName, value, `type`) } def jsObjectFeedbackTextArea(obj: com.edsancha.medallia.api.v0.models.FeedbackTextArea): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsString(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "textArea") } implicit def jsonWritesMedalliaApiFeedbackTextArea: play.api.libs.json.Writes[FeedbackTextArea] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackTextArea) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackTextArea(obj) } } implicit def jsonReadsMedalliaApiFeedbackTextInput: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackTextInput] = { for { index <- (__ \ "index").read[Int] id <- (__ \ "id").read[Int] uniqueName <- (__ \ "unique_name").read[String] value <- (__ \ "value").read[String] `type` <- (__ \ "type").read[String] } yield FeedbackTextInput(index, id, uniqueName, value, `type`) } def jsObjectFeedbackTextInput(obj: com.edsancha.medallia.api.v0.models.FeedbackTextInput): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "index" -> play.api.libs.json.JsNumber(obj.index), "id" -> play.api.libs.json.JsNumber(obj.id), "unique_name" -> play.api.libs.json.JsString(obj.uniqueName), "value" -> play.api.libs.json.JsString(obj.value), "type" -> play.api.libs.json.JsString(obj.`type`) ) ++ play.api.libs.json.Json.obj("component" -> "textInput") } implicit def jsonWritesMedalliaApiFeedbackTextInput: play.api.libs.json.Writes[FeedbackTextInput] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackTextInput) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackTextInput(obj) } } implicit def jsonReadsMedalliaApiForm: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.Form] = { for { formId <- (__ \ "formId").read[Int] name <- (__ \ "name").read[String] title <- (__ \ "title").read[String] formType <- (__ \ "formType").read[com.edsancha.medallia.api.v0.models.FormType] inviteData <- (__ \ "inviteData").readNullable[com.edsancha.medallia.api.v0.models.InviteData] triggerData <- (__ \ "triggerData").readNullable[com.edsancha.medallia.api.v0.models.TriggerData] formJson <- (__ \ "formJson").read[com.edsancha.medallia.api.v0.models.FormJson] } yield Form(formId, name, title, formType, inviteData, triggerData, formJson) } def jsObjectForm(obj: com.edsancha.medallia.api.v0.models.Form): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "formId" -> play.api.libs.json.JsNumber(obj.formId), "name" -> play.api.libs.json.JsString(obj.name), "title" -> play.api.libs.json.JsString(obj.title), "formType" -> play.api.libs.json.JsString(obj.formType.toString), "formJson" -> com.edsancha.medallia.api.v0.models.json.jsObjectFormJson(obj.formJson) ) ++ (obj.inviteData match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("inviteData" -> com.edsancha.medallia.api.v0.models.json.jsObjectInviteData(x)) }) ++ (obj.triggerData match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("triggerData" -> com.edsancha.medallia.api.v0.models.json.jsObjectTriggerData(x)) }) } implicit def jsonWritesMedalliaApiForm: play.api.libs.json.Writes[Form] = { (obj: com.edsancha.medallia.api.v0.models.Form) => { com.edsancha.medallia.api.v0.models.json.jsObjectForm(obj) } } implicit def jsonReadsMedalliaApiFormJson: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FormJson] = { (__ \ "pages").read[Seq[com.edsancha.medallia.api.v0.models.Page]].map { x => FormJson(pages = x) } } def jsObjectFormJson(obj: com.edsancha.medallia.api.v0.models.FormJson): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "pages" -> play.api.libs.json.Json.toJson(obj.pages) ) } implicit def jsonWritesMedalliaApiFormJson: play.api.libs.json.Writes[FormJson] = { (obj: com.edsancha.medallia.api.v0.models.FormJson) => { com.edsancha.medallia.api.v0.models.json.jsObjectFormJson(obj) } } implicit def jsonReadsMedalliaApiImage: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.Image] = { for { name <- (__ \ "name").read[String] url <- (__ \ "url").read[String] } yield Image(name, url) } def jsObjectImage(obj: com.edsancha.medallia.api.v0.models.Image): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "url" -> play.api.libs.json.JsString(obj.url) ) } implicit def jsonWritesMedalliaApiImage: play.api.libs.json.Writes[Image] = { (obj: com.edsancha.medallia.api.v0.models.Image) => { com.edsancha.medallia.api.v0.models.json.jsObjectImage(obj) } } implicit def jsonReadsMedalliaApiInviteData: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.InviteData] = { for { invitationHeadline <- (__ \ "invitationHeadline").read[String] invitationText <- (__ \ "invitationText").read[String] provideButtonText <- (__ \ "provideButtonText").read[String] declineButtonText <- (__ \ "declineButtonText").read[String] laterButtonText <- (__ \ "laterButtonText").read[String] } yield InviteData(invitationHeadline, invitationText, provideButtonText, declineButtonText, laterButtonText) } def jsObjectInviteData(obj: com.edsancha.medallia.api.v0.models.InviteData): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "invitationHeadline" -> play.api.libs.json.JsString(obj.invitationHeadline), "invitationText" -> play.api.libs.json.JsString(obj.invitationText), "provideButtonText" -> play.api.libs.json.JsString(obj.provideButtonText), "declineButtonText" -> play.api.libs.json.JsString(obj.declineButtonText), "laterButtonText" -> play.api.libs.json.JsString(obj.laterButtonText) ) } implicit def jsonWritesMedalliaApiInviteData: play.api.libs.json.Writes[InviteData] = { (obj: com.edsancha.medallia.api.v0.models.InviteData) => { com.edsancha.medallia.api.v0.models.json.jsObjectInviteData(obj) } } implicit def jsonReadsMedalliaApiNumberOfAppSession: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.NumberOfAppSession] = { for { number <- (__ \ "number").read[String] compareString <- (__ \ "compareString").read[com.edsancha.medallia.api.v0.models.CompareString] } yield NumberOfAppSession(number, compareString) } def jsObjectNumberOfAppSession(obj: com.edsancha.medallia.api.v0.models.NumberOfAppSession): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "number" -> play.api.libs.json.JsString(obj.number), "compareString" -> play.api.libs.json.JsString(obj.compareString.toString) ) } implicit def jsonWritesMedalliaApiNumberOfAppSession: play.api.libs.json.Writes[NumberOfAppSession] = { (obj: com.edsancha.medallia.api.v0.models.NumberOfAppSession) => { com.edsancha.medallia.api.v0.models.json.jsObjectNumberOfAppSession(obj) } } implicit def jsonReadsMedalliaApiNumberOfDays: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.NumberOfDays] = { (__ \ "days").read[String].map { x => NumberOfDays(days = x) } } def jsObjectNumberOfDays(obj: com.edsancha.medallia.api.v0.models.NumberOfDays): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "days" -> play.api.libs.json.JsString(obj.days) ) } implicit def jsonWritesMedalliaApiNumberOfDays: play.api.libs.json.Writes[NumberOfDays] = { (obj: com.edsancha.medallia.api.v0.models.NumberOfDays) => { com.edsancha.medallia.api.v0.models.json.jsObjectNumberOfDays(obj) } } implicit def jsonReadsMedalliaApiPage: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.Page] = { for { name <- (__ \ "name").read[String] index <- (__ \ "index").read[Int] dynamicData <- (__ \ "dynamicData").read[Seq[com.edsancha.medallia.api.v0.models.ComponentUnion]] } yield Page(name, index, dynamicData) } def jsObjectPage(obj: com.edsancha.medallia.api.v0.models.Page): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "name" -> play.api.libs.json.JsString(obj.name), "index" -> play.api.libs.json.JsNumber(obj.index), "dynamicData" -> play.api.libs.json.Json.toJson(obj.dynamicData) ) } implicit def jsonWritesMedalliaApiPage: play.api.libs.json.Writes[Page] = { (obj: com.edsancha.medallia.api.v0.models.Page) => { com.edsancha.medallia.api.v0.models.json.jsObjectPage(obj) } } implicit def jsonReadsMedalliaApiPercentageOfSessions: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.PercentageOfSessions] = { (__ \ "prec").read[String].map { x => PercentageOfSessions(prec = x) } } def jsObjectPercentageOfSessions(obj: com.edsancha.medallia.api.v0.models.PercentageOfSessions): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "prec" -> play.api.libs.json.JsString(obj.prec) ) } implicit def jsonWritesMedalliaApiPercentageOfSessions: play.api.libs.json.Writes[PercentageOfSessions] = { (obj: com.edsancha.medallia.api.v0.models.PercentageOfSessions) => { com.edsancha.medallia.api.v0.models.json.jsObjectPercentageOfSessions(obj) } } implicit def jsonReadsMedalliaApiTimeInForeground: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.TimeInForeground] = { for { time <- (__ \ "time").read[String] compareString <- (__ \ "compareString").read[com.edsancha.medallia.api.v0.models.CompareString] } yield TimeInForeground(time, compareString) } def jsObjectTimeInForeground(obj: com.edsancha.medallia.api.v0.models.TimeInForeground): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "time" -> play.api.libs.json.JsString(obj.time), "compareString" -> play.api.libs.json.JsString(obj.compareString.toString) ) } implicit def jsonWritesMedalliaApiTimeInForeground: play.api.libs.json.Writes[TimeInForeground] = { (obj: com.edsancha.medallia.api.v0.models.TimeInForeground) => { com.edsancha.medallia.api.v0.models.json.jsObjectTimeInForeground(obj) } } implicit def jsonReadsMedalliaApiTriggerData: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.TriggerData] = { for { numberOfAppSession <- (__ \ "numberOfAppSession").readNullable[com.edsancha.medallia.api.v0.models.NumberOfAppSession] timeInForeground <- (__ \ "timeInForeground").readNullable[com.edsancha.medallia.api.v0.models.TimeInForeground] mobileappVersion <- (__ \ "mobileappVersion").readNullable[Seq[String]] submitted <- (__ \ "submitted").readNullable[com.edsancha.medallia.api.v0.models.NumberOfDays] declined <- (__ \ "declined").readNullable[com.edsancha.medallia.api.v0.models.NumberOfDays] mobileosVersion <- (__ \ "mobileosVersion").readNullable[Seq[String]] percentageOfSessions <- (__ \ "percentageOfSessions").readNullable[com.edsancha.medallia.api.v0.models.PercentageOfSessions] genericRule <- (__ \ "genericRule").readNullable[String] } yield TriggerData(numberOfAppSession, timeInForeground, mobileappVersion, submitted, declined, mobileosVersion, percentageOfSessions, genericRule) } def jsObjectTriggerData(obj: com.edsancha.medallia.api.v0.models.TriggerData): play.api.libs.json.JsObject = { (obj.numberOfAppSession match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("numberOfAppSession" -> com.edsancha.medallia.api.v0.models.json.jsObjectNumberOfAppSession(x)) }) ++ (obj.timeInForeground match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("timeInForeground" -> com.edsancha.medallia.api.v0.models.json.jsObjectTimeInForeground(x)) }) ++ (obj.mobileappVersion match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("mobileappVersion" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.submitted match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("submitted" -> com.edsancha.medallia.api.v0.models.json.jsObjectNumberOfDays(x)) }) ++ (obj.declined match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("declined" -> com.edsancha.medallia.api.v0.models.json.jsObjectNumberOfDays(x)) }) ++ (obj.mobileosVersion match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("mobileosVersion" -> play.api.libs.json.Json.toJson(x)) }) ++ (obj.percentageOfSessions match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("percentageOfSessions" -> com.edsancha.medallia.api.v0.models.json.jsObjectPercentageOfSessions(x)) }) ++ (obj.genericRule match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("genericRule" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesMedalliaApiTriggerData: play.api.libs.json.Writes[TriggerData] = { (obj: com.edsancha.medallia.api.v0.models.TriggerData) => { com.edsancha.medallia.api.v0.models.json.jsObjectTriggerData(obj) } } implicit def jsonReadsMedalliaApiComponentUnion: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.ComponentUnion] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "label" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentLabel.reads(js) case "image" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentImage.reads(js) case "nps" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentNps.reads(js) case "textArea" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentTextArea.reads(js) case "textInput" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentTextInput.reads(js) case "radio" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentRadioSelector.reads(js) case "checkbox" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentCheckbox.reads(js) case "select" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentDropdown.reads(js) case "grading" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentGrading.reads(js) case "grading0to10" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentGrading0to10.reads(js) case "grading1to10" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiComponentGrading1to10.reads(js) case other => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.ComponentUnionUndefinedType(other)) } } (js \ "component").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectComponentUnion(obj: com.edsancha.medallia.api.v0.models.ComponentUnion): play.api.libs.json.JsObject = { obj match { case x: com.edsancha.medallia.api.v0.models.ComponentLabel => com.edsancha.medallia.api.v0.models.json.jsObjectComponentLabel(x) case x: com.edsancha.medallia.api.v0.models.ComponentImage => com.edsancha.medallia.api.v0.models.json.jsObjectComponentImage(x) case x: com.edsancha.medallia.api.v0.models.ComponentNps => com.edsancha.medallia.api.v0.models.json.jsObjectComponentNps(x) case x: com.edsancha.medallia.api.v0.models.ComponentTextArea => com.edsancha.medallia.api.v0.models.json.jsObjectComponentTextArea(x) case x: com.edsancha.medallia.api.v0.models.ComponentTextInput => com.edsancha.medallia.api.v0.models.json.jsObjectComponentTextInput(x) case x: com.edsancha.medallia.api.v0.models.ComponentRadioSelector => com.edsancha.medallia.api.v0.models.json.jsObjectComponentRadioSelector(x) case x: com.edsancha.medallia.api.v0.models.ComponentCheckbox => com.edsancha.medallia.api.v0.models.json.jsObjectComponentCheckbox(x) case x: com.edsancha.medallia.api.v0.models.ComponentDropdown => com.edsancha.medallia.api.v0.models.json.jsObjectComponentDropdown(x) case x: com.edsancha.medallia.api.v0.models.ComponentGrading => com.edsancha.medallia.api.v0.models.json.jsObjectComponentGrading(x) case x: com.edsancha.medallia.api.v0.models.ComponentGrading0to10 => com.edsancha.medallia.api.v0.models.json.jsObjectComponentGrading0to10(x) case x: com.edsancha.medallia.api.v0.models.ComponentGrading1to10 => com.edsancha.medallia.api.v0.models.json.jsObjectComponentGrading1to10(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesMedalliaApiComponentUnion: play.api.libs.json.Writes[ComponentUnion] = { (obj: com.edsancha.medallia.api.v0.models.ComponentUnion) => { com.edsancha.medallia.api.v0.models.json.jsObjectComponentUnion(obj) } } implicit def jsonReadsMedalliaApiFeedbackUnion: play.api.libs.json.Reads[com.edsancha.medallia.api.v0.models.FeedbackUnion] = (js: play.api.libs.json.JsValue) => { def readDiscriminator(discriminator: String) = { discriminator match { case "nps" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackNps.reads(js) case "textArea" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackTextArea.reads(js) case "textInput" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackTextInput.reads(js) case "radio" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackRadioSelector.reads(js) case "checkbox" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackCheckbox.reads(js) case "select" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackDropdown.reads(js) case "grading" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackGrading.reads(js) case "grading0to10" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackGrading0to10.reads(js) case "grading1to10" => com.edsancha.medallia.api.v0.models.json.jsonReadsMedalliaApiFeedbackGrading1to10.reads(js) case other => play.api.libs.json.JsSuccess(com.edsancha.medallia.api.v0.models.FeedbackUnionUndefinedType(other)) } } (js \ "component").validate[String] match { case e: play.api.libs.json.JsError => e case s: play.api.libs.json.JsSuccess[String] => readDiscriminator(s.value) } } def jsObjectFeedbackUnion(obj: com.edsancha.medallia.api.v0.models.FeedbackUnion): play.api.libs.json.JsObject = { obj match { case x: com.edsancha.medallia.api.v0.models.FeedbackNps => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackNps(x) case x: com.edsancha.medallia.api.v0.models.FeedbackTextArea => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackTextArea(x) case x: com.edsancha.medallia.api.v0.models.FeedbackTextInput => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackTextInput(x) case x: com.edsancha.medallia.api.v0.models.FeedbackRadioSelector => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackRadioSelector(x) case x: com.edsancha.medallia.api.v0.models.FeedbackCheckbox => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackCheckbox(x) case x: com.edsancha.medallia.api.v0.models.FeedbackDropdown => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackDropdown(x) case x: com.edsancha.medallia.api.v0.models.FeedbackGrading => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackGrading(x) case x: com.edsancha.medallia.api.v0.models.FeedbackGrading0to10 => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackGrading0to10(x) case x: com.edsancha.medallia.api.v0.models.FeedbackGrading1to10 => com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackGrading1to10(x) case other => { sys.error(s"The type[${other.getClass.getName}] has no JSON writer") } } } implicit def jsonWritesMedalliaApiFeedbackUnion: play.api.libs.json.Writes[FeedbackUnion] = { (obj: com.edsancha.medallia.api.v0.models.FeedbackUnion) => { com.edsancha.medallia.api.v0.models.json.jsObjectFeedbackUnion(obj) } } } } package com.edsancha.medallia.api.v0 { import com.ning.http.client.{AsyncCompletionHandler, AsyncHttpClient, Realm, Request, RequestBuilder, Response, AsyncHttpClientConfig} object Constants { val BaseUrl = "https://api-us.kampyle.com/api/v1" val Namespace = "com.edsancha.medallia.api.v0" val UserAgent = "apibuilder app.apibuilder.io/edsancha/medallia-api/0.0.1/ning_1_8_client" val Version = "0.0.1" val VersionMajor = 0 } class Client( val baseUrl: String = "https://api-us.kampyle.com/api/v1", auth: scala.Option[com.edsancha.medallia.api.v0.Authorization] = None, defaultHeaders: Seq[(String, String)] = Nil, asyncHttpClient: AsyncHttpClient = Client.defaultAsyncHttpClient ) extends interfaces.Client { import org.slf4j.{Logger, LoggerFactory} import com.edsancha.medallia.api.v0.models.json._ import com.edsancha.survey.models.v0.models.json._ def closeAsyncHttpClient(): Unit = { asyncHttpClient.close() } val logger = LoggerFactory.getLogger(getClass) def accessTokenWrappers: AccessTokenWrappers = AccessTokenWrappers def configurations: Configurations = Configurations def feedbacks: Feedbacks = Feedbacks object AccessTokenWrappers extends AccessTokenWrappers { override def postAccessToken( requestHeaders: Seq[(String, String)] = Nil )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[com.edsancha.medallia.api.v0.models.AccessTokenWrapper] = { _executeRequest("POST", s"/accessToken", requestHeaders = requestHeaders).map { case r if r.getStatusCode == 200 => _root_.com.edsancha.medallia.api.v0.Client.parseJson("com.edsancha.medallia.api.v0.models.AccessTokenWrapper", r, _.validate[com.edsancha.medallia.api.v0.models.AccessTokenWrapper]) case r if r.getStatusCode == 401 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r if r.getStatusCode == 500 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r => throw com.edsancha.medallia.api.v0.errors.FailedRequest(r.getStatusCode, s"Unsupported response code[${r.getStatusCode}]. Expected: 200, 401, 500", requestUri = Some(r.getUri)) } } } object Configurations extends Configurations { override def getConfiguration( requestHeaders: Seq[(String, String)] = Nil )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[com.edsancha.medallia.api.v0.models.Configuration] = { _executeRequest("GET", s"/configuration", requestHeaders = requestHeaders).map { case r if r.getStatusCode == 200 => _root_.com.edsancha.medallia.api.v0.Client.parseJson("com.edsancha.medallia.api.v0.models.Configuration", r, _.validate[com.edsancha.medallia.api.v0.models.Configuration]) case r if r.getStatusCode == 400 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r if r.getStatusCode == 401 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r if r.getStatusCode == 500 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r => throw com.edsancha.medallia.api.v0.errors.FailedRequest(r.getStatusCode, s"Unsupported response code[${r.getStatusCode}]. Expected: 200, 400, 401, 500", requestUri = Some(r.getUri)) } } } object Feedbacks extends Feedbacks { override def postFeedback( feedback: com.edsancha.medallia.api.v0.models.Feedback, requestHeaders: Seq[(String, String)] = Nil )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[Unit] = { val payload = play.api.libs.json.Json.toJson(feedback) _executeRequest("POST", s"/feedback", body = Some(payload), requestHeaders = requestHeaders).map { case r if r.getStatusCode == 200 => () case r if r.getStatusCode == 400 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r if r.getStatusCode == 401 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r if r.getStatusCode == 500 => throw com.edsancha.medallia.api.v0.errors.UnitResponse(r.getStatusCode) case r => throw com.edsancha.medallia.api.v0.errors.FailedRequest(r.getStatusCode, s"Unsupported response code[${r.getStatusCode}]. Expected: 200, 400, 401, 500", requestUri = Some(r.getUri)) } } } def _logRequest(request: Request): Unit = { if (logger.isInfoEnabled) { logger.info("_logRequest: " + request) } } def _logResponse(response: Response): Unit = { if (logger.isInfoEnabled) { logger.info("_logResponse: status=" + response.getStatusCode + ", responseBody: " + response.getResponseBody("UTF-8")) } } def _requestBuilder(method: String, path: String, requestHeaders: Seq[(String, String)]): RequestBuilder = { val builder = new RequestBuilder(method) .setUrl(baseUrl + path) .addHeader("User-Agent", Constants.UserAgent) .addHeader("X-Apidoc-Version", Constants.Version) .addHeader("X-Apidoc-Version-Major", Constants.VersionMajor.toString) defaultHeaders.foreach { h => builder.addHeader(h._1, h._2) } requestHeaders.foreach { h => builder.addHeader(h._1, h._2) } auth.fold(builder) { case Authorization.Basic(username, passwordOpt) => { builder.setRealm( new Realm.RealmBuilder() .setPrincipal(username) .setPassword(passwordOpt.getOrElse("")) .setUsePreemptiveAuth(true) .setScheme(Realm.AuthScheme.BASIC) .build() ) } case a => sys.error("Invalid authorization scheme[" + a.getClass + "]") } } def _executeRequest( method: String, path: String, queryParameters: Seq[(String, String)] = Nil, requestHeaders: Seq[(String, String)] = Nil, body: Option[play.api.libs.json.JsValue] = None )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[com.ning.http.client.Response] = { val allHeaders = body match { case None => requestHeaders case Some(_) => _withJsonContentType(requestHeaders) } val request = _requestBuilder(method, path, allHeaders) queryParameters.foreach { pair => request.addQueryParameter(pair._1, pair._2) } val requestWithParamsAndBody = body.fold(request) { b => val serialized = play.api.libs.json.Json.stringify(b) request.setBody(serialized) } val finalRequest = requestWithParamsAndBody.build() _logRequest(finalRequest) val result = scala.concurrent.Promise[com.ning.http.client.Response]() asyncHttpClient.executeRequest(finalRequest, new AsyncCompletionHandler[Unit]() { override def onCompleted(r: com.ning.http.client.Response) = { _logResponse(r) result.success(r) } override def onThrowable(t: Throwable) = result.failure(t) } ) result.future } /** * Adds a Content-Type: application/json header unless the specified requestHeaders * already contain a Content-Type header */ def _withJsonContentType(headers: Seq[(String, String)]): Seq[(String, String)] = { headers.find { _._1.toUpperCase == "CONTENT-TYPE" } match { case None => headers ++ Seq(("Content-Type" -> "application/json; charset=UTF-8")) case Some(_) => headers } } } object Client { private lazy val defaultAsyncHttpClient = { new AsyncHttpClient( new AsyncHttpClientConfig.Builder() .setExecutorService(java.util.concurrent.Executors.newCachedThreadPool()) .build() ) } def parseJson[T]( className: String, r: _root_.com.ning.http.client.Response, f: (play.api.libs.json.JsValue => play.api.libs.json.JsResult[T]) ): T = { f(play.api.libs.json.Json.parse(r.getResponseBody("UTF-8"))) match { case play.api.libs.json.JsSuccess(x, _) => x case play.api.libs.json.JsError(errors) => { throw com.edsancha.medallia.api.v0.errors.FailedRequest(r.getStatusCode, s"Invalid json for class[" + className + "]: " + errors.mkString(" "), requestUri = Some(r.getUri)) } } } } sealed trait Authorization extends _root_.scala.Product with _root_.scala.Serializable object Authorization { final case class Basic(username: String, password: Option[String] = None) extends Authorization } package interfaces { trait Client { def baseUrl: String def accessTokenWrappers: com.edsancha.medallia.api.v0.AccessTokenWrappers def configurations: com.edsancha.medallia.api.v0.Configurations def feedbacks: com.edsancha.medallia.api.v0.Feedbacks } } trait AccessTokenWrappers { /** * This API is used to retrieve the temporary access token that allows your app to * access all other APIs */ def postAccessToken( requestHeaders: Seq[(String, String)] = Nil )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[com.edsancha.medallia.api.v0.models.AccessTokenWrapper] } trait Configurations { /** * This API returns the full configuration as defined in the Medallia Digital * command center. It returns the list of surveys, their content and business logic * as well as targeting and segmentation rules. */ def getConfiguration( requestHeaders: Seq[(String, String)] = Nil )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[com.edsancha.medallia.api.v0.models.Configuration] } trait Feedbacks { /** * This API allows the application to submit feedback collected in the app to the * Medallia Digital */ def postFeedback( feedback: com.edsancha.medallia.api.v0.models.Feedback, requestHeaders: Seq[(String, String)] = Nil )(implicit ec: scala.concurrent.ExecutionContext): scala.concurrent.Future[Unit] } package errors { import com.edsancha.medallia.api.v0.models.json._ import com.edsancha.survey.models.v0.models.json._ final case class UnitResponse(status: Int) extends Exception(s"HTTP $status") final case class FailedRequest(responseCode: Int, message: String, requestUri: Option[_root_.java.net.URI] = None) extends _root_.java.lang.Exception(s"HTTP $responseCode: $message") } object PathSegment { // See https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/scala/play/utils/UriEncoding.scala def encode(s: String, inputCharset: String): String = { val in = s.getBytes(inputCharset) val out = new java.io.ByteArrayOutputStream() for (b <- in) { val allowed = segmentChars.get(b & 0xFF) if (allowed) { out.write(b) } else { out.write('%') out.write(upperHex((b >> 4) & 0xF)) out.write(upperHex(b & 0xF)) } } out.toString("US-ASCII") } private def upperHex(x: Int): Int = { // Assume 0 <= x < 16 if (x < 10) (x + '0') else (x - 10 + 'A') } private val segmentChars: java.util.BitSet = membershipTable(pchar) private def pchar: Seq[Char] = { val alphaDigit = for ((min, max) <- Seq(('a', 'z'), ('A', 'Z'), ('0', '9')); c <- min to max) yield c val unreserved = alphaDigit ++ Seq('-', '.', '_', '~') val subDelims = Seq('!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=') unreserved ++ subDelims ++ Seq(':', '@') } private def membershipTable(chars: Seq[Char]): java.util.BitSet = { val bits = new java.util.BitSet(256) for (c <- chars) { bits.set(c.toInt) } bits } } }