app/controllers/JsonBuilder.scala (38 lines of code) (raw):
package controllers
import play.api.libs.json._
import repositories.Tables.ImageRow
import infra.util.UrlBuilder
object JsonBuilder {
def imageUrl(url: String): String = {
Json.stringify(JsObject(Seq("url" -> JsString(url))))
}
/**
* @param urls: Sea[String]
* @return String urlsをJson形式の文字列にしたもの
*/
def imageUrls(urls: Seq[String]): String = {
val urlsJson = urls.map(url => JsObject(Seq("url" -> JsString(url))))
Json.stringify(JsObject(Seq("images" -> JsArray(urlsJson))))
}
def images(images: Seq[ImageRow]): String = {
val urls = images.map { image =>
JsObject(Seq("url" -> JsString(UrlBuilder.imageUrl(image.id.toString))))
}
Json.stringify(JsObject(Seq("images" -> JsArray(urls))))
}
def imagesByIds(ids: Seq[Int]): String = {
val urls = ids.map { id =>
JsObject(Seq("url" -> JsString(UrlBuilder.imageUrl(id.toString))))
}
Json.stringify(JsObject(Seq("images" -> JsArray(urls))))
}
def error(message: String): String = {
Json.stringify(JsObject(Seq("message" -> JsString(message))))
}
def badRequest(message: String = "リクエストが不正です"): String = {
Json.stringify(JsObject(Seq(
"code" -> JsNumber(400),
"status" -> JsString("Bad Request"),
"message" -> JsString(message))))
}
def internalServerError(message: String): String = {
Json.stringify(JsObject(Seq(
"status" -> JsString("Internal Server Error"))))
}
}