lila/app/ui/EmbedConfig.scala

38 lines
975 B
Scala

package lila.app
package ui
import play.api.mvc.RequestHeader
import play.api.i18n.Lang
import lila.common.Nonce
case class EmbedConfig(
bg: String,
board: String,
pieceSet: lila.pref.PieceSet,
lang: Lang,
req: RequestHeader,
nonce: Nonce
)
object EmbedConfig {
object implicits {
implicit def configLang(implicit config: EmbedConfig): Lang = config.lang
implicit def configReq(implicit config: EmbedConfig): RequestHeader = config.req
}
def apply(req: RequestHeader): EmbedConfig =
EmbedConfig(
bg = get("bg", req).filterNot("auto".==) | "light",
board = lila.pref.Theme(~get("theme", req)).cssClass,
pieceSet = lila.pref.PieceSet(~get("pieceSet", req)),
lang = lila.i18n.I18nLangPicker(req, none),
req = req,
nonce = Nonce.random
)
private def get(name: String, req: RequestHeader): Option[String] =
req.queryString get name flatMap (_.headOption) filter (_.nonEmpty)
}