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

import com.gu.itunes.{ Application, SecretKeeper } import com.gu.play.secretrotation.{ RotatingSecretComponents, SnapshotProvider, TransitionTiming } import controllers.AssetsComponents import play.api.ApplicationLoader.Context import play.api.{ BuiltInComponentsFromContext, NoHttpFiltersComponents } import play.api.routing.Router import router.Routes import software.amazon.awssdk.services.ssm.SsmClient import java.time.Duration.{ ofHours, ofMinutes } /* if the import router.Routes above says that it can't resolve router, this article was useful: https://stackoverflow.com/questions/37333140/cannot-import-class-router-routes-in-applicationloader-on-play-2-5 tl;dr 1. Make sure your build.sbt contains routesGenerator := InjectedRoutesGenerator 2. Execute playCompileEverything in sbt and refresh your project in your IDE */ class AppComponents(context: Context) extends BuiltInComponentsFromContext(context) with NoHttpFiltersComponents with AssetsComponents with RotatingSecretComponents { val secretStateSupplier: SnapshotProvider = { import com.gu.play.secretrotation.aws.parameterstore new parameterstore.SecretSupplier( TransitionTiming(usageDelay = ofMinutes(3), overlapDuration = ofHours(2)), "/ANY/content-api/podcasts-rss/play-secret", parameterstore.AwsSdkV2(SsmClient.builder().credentialsProvider(SecretKeeper.credentialsProviderChain).build())) } val appController = new Application(controllerComponents, configuration) val router: Router = new Routes(httpErrorHandler, appController, assets) }