app/controllers/CollectionController.scala (74 lines of code) (raw):

package controllers import scala.concurrent.ExecutionContext import com.gu.facia.client.models.CollectionConfigJson import config.UpdateManager import permissions.ConfigPermissionCheck import play.api.libs.json.{Json, OFormat} import services.Press import updates._ import util.Acl import util.Requests._ import logging.Logging object CollectionRequest { implicit val jsonFormat: OFormat[CollectionRequest] = Json.format[CollectionRequest] } case class CollectionRequest( frontIds: List[String], collection: CollectionConfigJson ) object CreateCollectionResponse { implicit val jsonFormat: OFormat[CreateCollectionResponse] = Json.format[CreateCollectionResponse] } case class CreateCollectionResponse(id: String) class CollectionController( val acl: Acl, val structuredLogger: StructuredLogger, val updateManager: UpdateManager, val press: Press, val deps: BaseFaciaControllerComponents )(implicit ec: ExecutionContext) extends BaseFaciaController(deps) with Logging { def create = (AccessAPIAuthAction andThen new ConfigPermissionCheck(acl)) { request => request.body.read[CollectionRequest] match { case Some(CollectionRequest(frontIds, collection)) => val identity = request.user val collectionId = updateManager.addCollection(frontIds, collection, identity) press.fromSetOfIdsWithForceConfig(Set(collectionId)) structuredLogger.putLog( LogUpdate( CollectionCreate(frontIds, collection, collectionId), identity.email ) ) Ok(Json.toJson(CreateCollectionResponse(collectionId))) case None => BadRequest } } def update(collectionId: String) = (AccessAPIAuthAction andThen new ConfigPermissionCheck(acl)) { request => request.body.read[CollectionRequest] match { case Some(CollectionRequest(frontIds, collection)) => val identity = request.user updateManager.updateCollection( collectionId, frontIds, collection, identity ) press.fromSetOfIdsWithForceConfig(Set(collectionId)) structuredLogger.putLog( LogUpdate( CollectionUpdate(frontIds, collection, collectionId), identity.email ) ) Ok case None => BadRequest } } }