app/AppComponents.scala (47 lines of code) (raw):
import com.gu.AppIdentity
import com.gu.pandomainauth.{PanDomainAuthSettingsRefresher, S3BucketLoader}
import com.gu.permissions.{PermissionsConfig, PermissionsProvider}
import config.AppConfig
import config.AWS._
import controllers._
import helpers.{HSTSFilter, Loggable}
import logic.{FlexibleApi, SnapshotApi}
import play.api.ApplicationLoader.Context
import play.api.libs.ws.ahc.AhcWSComponents
import play.api.mvc.EssentialFilter
import play.api.routing.Router
import play.api.BuiltInComponentsFromContext
import router.Routes
import scala.concurrent.ExecutionContext.Implicits.{global => globalExecutionContext}
class AppComponents(context: Context, identity: AppIdentity) extends BuiltInComponentsFromContext(context) with AhcWSComponents with Loggable with AssetsComponents {
override lazy val httpFilters: Seq[EssentialFilter] = Seq(new HSTSFilter()(materializer, globalExecutionContext))
val config = new AppConfig(configuration, identity)
val permissions = PermissionsProvider(PermissionsConfig(
stage = config.effectiveStage,
region = config.region,
awsCredentials = credentialsV1
))
val panDomainSettings: PanDomainAuthSettingsRefresher = PanDomainAuthSettingsRefresher(
domain = config.domain,
system = "restorer",
S3BucketLoader.forAwsSdkV1(S3ClientV1, "pan-domain-auth-settings")
)
val snapshotApi = new SnapshotApi(s3Client)
val flexibleApi = new FlexibleApi(wsClient)
val applicationController = new Application(controllerComponents, config, wsClient, permissions, panDomainSettings)
val loginController = new Login(controllerComponents, config, wsClient, permissions, panDomainSettings)
val managementController = new Management(controllerComponents, config, wsClient, permissions, panDomainSettings)
val versionsController = new Versions(controllerComponents, config, snapshotApi, wsClient, permissions, panDomainSettings)
val restoreController = new Restore(controllerComponents, snapshotApi, flexibleApi, config, wsClient, permissions, panDomainSettings)
val exportController = new Export(controllerComponents, snapshotApi, config, wsClient, permissions, panDomainSettings)
def router: Router = new Routes(
httpErrorHandler,
applicationController,
loginController,
assets,
managementController,
versionsController,
restoreController,
exportController
)
}