app/AppComponents.scala (37 lines of code) (raw):

import com.gu.pandomainauth.S3BucketLoader.forAwsSdkV1 import com.gu.pandomainauth.{PanDomainAuthSettingsRefresher, PublicSettings, S3BucketLoader, Settings} import config.{AWS, LoginConfig, Switches} import controllers._ import play.api.ApplicationLoader.Context import router.Routes import scala.concurrent.Future class AppComponents(context: Context) extends LoginControllerComponents(context, new AWS()) { override def config = LoginConfig.forStage(asgTags.map(_.stage)) override val switches = new Switches(config, aws.s3Client) private val s3BucketLoader: S3BucketLoader = forAwsSdkV1(aws.s3Client, "pan-domain-auth-settings") private lazy val panDomainSettings: PanDomainAuthSettingsRefresher = PanDomainAuthSettingsRefresher( domain = config.domain, system = "login", s3BucketLoader ) private lazy val desktopPanDomainSettings: PanDomainAuthSettingsRefresher = PanDomainAuthSettingsRefresher( domain = config.desktopDomain, system = "login-desktop", s3BucketLoader ) val loginPublicSettings: PublicSettings = PublicSettings( new Settings.Loader(s3BucketLoader, s"${config.domain}.settings.public") ) loginPublicSettings.start() switches.start() applicationLifecycle.addStopHook(() => { switches.stop() Future.successful(()) }) private val app = new Application(this, panDomainSettings) private val emergency = new Emergency(loginPublicSettings, this, aws.sesClient, panDomainSettings) private val login = new Login(this, panDomainSettings) private val desktopLogin = new DesktopLogin(this, desktopPanDomainSettings) private val switchesController = new SwitchesController(this, panDomainSettings) override lazy val router = new Routes(httpErrorHandler, app, desktopLogin, login, emergency, switchesController, assets) }