app/controllers/Youtube.scala (30 lines of code) (raw):
package controllers
import com.gu.media.youtube.YouTubeChannel
import com.gu.pandahmac.HMACAuthActions
import play.api.libs.json.Json
import play.api.mvc.{BaseController, ControllerComponents}
import util.{TrainingMode, YouTube}
import model.commands.CommandExceptions._
import com.gu.media.MediaAtomMakerPermissionsProvider
import scala.concurrent.ExecutionContext.Implicits.global
class Youtube (val authActions: HMACAuthActions, youtube: YouTube, permissionsProvider: MediaAtomMakerPermissionsProvider, val controllerComponents: ControllerComponents)
extends BaseController with TrainingMode {
import authActions.AuthAction
def listCategories() = AuthAction {
Ok(Json.toJson(youtube.categories))
}
def listChannels() = AuthAction { req =>
val user = req.user
val hasMakePublicPermission = permissionsProvider.getStatusPermissions(user).setVideosOnAllChannelsPublic
val requiredChannels = if (isInTrainingMode(req)) youtube.trainingChannels else youtube.allChannels
val channels = youtube.channelsWithData(hasMakePublicPermission).filter(c => requiredChannels.contains(c.id))
Ok(Json.toJson(channels))
}
def commercialVideoInfo(id: String) = AuthAction {
try {
Ok(Json.toJson(youtube.getCommercialVideoInfo(id)))
} catch {
commandExceptionAsResult
}
}
}