app/models/models.scala (34 lines of code) (raw):

package models import play.api.libs.json.{Json, Writes} sealed trait AccountConfigStatus case class FederationConfigError(causedBy: Throwable) extends AccountConfigStatus case object ConfigSuccess extends AccountConfigStatus case class ConfigWarn(accounts: Set[String]) extends AccountConfigStatus case class ConfigError(accounts: Set[String]) extends AccountConfigStatus sealed trait DisplayMode object Normal extends DisplayMode object Spooky extends DisplayMode object Festive extends DisplayMode case class JanusException( userMessage: String, engineerMessage: String, httpCode: Int, causedBy: Option[Throwable] ) extends Exception(engineerMessage, causedBy.orNull) object JanusException { implicit val janusExceptionWrites: Writes[JanusException] = Writes { exception => Json.obj( "status" -> "error", "message" -> exception.userMessage, "httpCode" -> exception.httpCode ) } implicit val throwableWrites: Writes[Throwable] = Writes { throwable => Json.obj( "status" -> "error", "message" -> throwable.getClass.getSimpleName ) } }