app/model/ClientConfig.scala (32 lines of code) (raw):
package model
import ai.x.play.json.Encoders._
import com.gu.media.Permissions
import ai.x.play.json.Jsonx
import play.api.libs.json.Format
case class Presence(domain: String, firstName: String, lastName: String, email: String) {
val jsLocation = s"https://$domain/client/1/lib.js"
}
object Presence {
implicit val format: Format[Presence] = Jsonx.formatCaseClass[Presence]
}
case class ClientConfig(
presence: Option[Presence],
youtubeEmbedUrl: String,
youtubeThumbnailUrl: String,
reauthUrl: String,
gridUrl: String,
capiProxyUrl: String,
liveCapiProxyUrl: String,
composerUrl: String,
ravenUrl: String,
stage: String,
viewerUrl: String,
// permissions also validated server-side on every request
permissions: Permissions,
minDurationForAds: Long,
isTrainingMode: Boolean,
workflowUrl: String,
targetingUrl: String
)
object ClientConfig {
implicit val format: Format[ClientConfig] = Jsonx.formatCaseClass[ClientConfig]
}