app/AppComponents.scala (45 lines of code) (raw):
import com.gu.pandomainauth.{PanDomainAuthSettingsRefresher, S3BucketLoader}
import controllers.AssetsComponents
import model.jobs.JobRunner
import modules.clustersync.ClusterSynchronisation
import modules.sponsorshiplifecycle.SponsorshipLifecycleJobs
import play.api.ApplicationLoader.Context
import play.api.BuiltInComponentsFromContext
import play.api.libs.ws.ahc.AhcWSComponents
import play.api.mvc.EssentialFilter
import play.api.routing.Router
import play.filters.HttpFiltersComponents
import router.Routes
import services._
import scala.language.postfixOps
class AppComponents(context: Context, config: Config)
extends BuiltInComponentsFromContext(context)
with AssetsComponents
with AhcWSComponents
with HttpFiltersComponents {
override def httpFilters: Seq[EssentialFilter] =
super.httpFilters
.filterNot(allowedHostsFilter ==)
.filterNot(csrfFilter ==)
new ClusterSynchronisation(context.lifecycle)
new JobRunner(context.lifecycle)
new SponsorshipLifecycleJobs(context.lifecycle)
val panDomainSettings = PanDomainAuthSettingsRefresher(
domain = config.pandaDomain,
system = config.pandaSystemIdentifier,
S3BucketLoader.forAwsSdkV1(AWS.S3Client, "pan-domain-auth-settings")
)
lazy val router: Router = new Routes(
httpErrorHandler,
new controllers.App(wsClient, controllerComponents, panDomainSettings),
new controllers.TagManagementApi(wsClient, controllerComponents, panDomainSettings),
new controllers.Reindex(wsClient, controllerComponents),
new controllers.HyperMediaApi(wsClient, controllerComponents, panDomainSettings),
new controllers.ReadOnlyApi(wsClient, controllerComponents),
new controllers.Login(wsClient, controllerComponents, panDomainSettings),
new controllers.Management(wsClient, controllerComponents),
assets,
new controllers.Support(wsClient, controllerComponents, panDomainSettings),
new controllers.Migration(wsClient, controllerComponents, panDomainSettings)
)
}