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

package wiring import org.apache.pekko.actor.ActorSystem import play.api.routing.Router import play.api.BuiltInComponentsFromContext import controllers.{AssetsComponents, Application} import play.api.mvc.EssentialFilter import play.filters.brotli.BrotliFilter import play.filters.brotli.BrotliFilterComponents import play.filters.gzip.GzipFilterComponents import play.filters.HttpFiltersComponents import play.filters.hosts.AllowedHostsFilter trait AppComponents extends AssetsComponents with HttpFiltersComponents with GzipFilterComponents with BrotliFilterComponents { self: BuiltInComponentsFromContext => implicit val as: ActorSystem = actorSystem /* play framework apply filters from right to left, so brotli needs to be first */ override def httpFilters: Seq[EssentialFilter] = gzipFilter +: brotliFilter +: super.httpFilters.filterNot(_.getClass == classOf[AllowedHostsFilter]) lazy val assetController = new controllers.Assets(httpErrorHandler, assetsMetadata, environment) override lazy val router: Router = new _root_.router.Routes( httpErrorHandler, new Application(controllerComponents), assetController ) }