lila/app/AppLoader.scala

144 lines
6.0 KiB
Scala
Raw Normal View History

2019-12-06 09:39:42 -07:00
package lila.app
2019-12-26 18:28:17 -07:00
import akka.actor.CoordinatedShutdown
2019-12-05 08:46:00 -07:00
import com.softwaremill.macwire._
import play.api._
2019-12-26 18:28:17 -07:00
import play.api.libs.crypto.CookieSignerProvider
2020-07-08 12:47:36 -06:00
import scala.annotation.nowarn
2019-12-05 08:46:00 -07:00
import play.api.mvc._
import play.api.mvc.request._
2019-12-05 08:46:00 -07:00
import play.api.routing.Router
import router.Routes
2019-12-06 09:39:42 -07:00
final class AppLoader extends ApplicationLoader {
2019-12-05 22:35:55 -07:00
def load(ctx: ApplicationLoader.Context): Application = new LilaComponents(ctx).application
2019-12-05 08:46:00 -07:00
}
2019-12-13 07:30:20 -07:00
final class LilaComponents(ctx: ApplicationLoader.Context)
extends BuiltInComponentsFromContext(ctx)
with _root_.controllers.AssetsComponents
with play.api.libs.ws.ahc.AhcWSComponents {
2019-12-05 08:46:00 -07:00
LoggerConfigurator(ctx.environment.classLoader).foreach {
_.configure(ctx.environment, ctx.initialConfiguration, Map.empty)
}
2019-12-19 22:11:32 -07:00
lila.log("boot").info {
2020-06-06 07:51:03 -06:00
val java = System.getProperty("java.version")
val mem = Runtime.getRuntime().maxMemory() / 1024 / 1024
val appVersionCommit = ~configuration.getOptional[String]("app.version.commit")
val appVersionDate = ~configuration.getOptional[String]("app.version.date")
s"lila $appVersionCommit $appVersionDate / java ${java}, memory: ${mem}MB"
2019-12-19 22:11:32 -07:00
}
lila.mon.start(configuration.get[Boolean]("kamon.enabled"))
2019-12-05 08:46:00 -07:00
import _root_.controllers._
// we want to use the legacy session cookie baker
// for compatibility with lila-ws
def cookieBaker = new LegacySessionCookieBaker(httpConfiguration.session, cookieSigner)
override lazy val requestFactory: RequestFactory = {
val cookieSigner = new CookieSignerProvider(httpConfiguration.secret).get
new DefaultRequestFactory(
new DefaultCookieHeaderEncoding(httpConfiguration.cookies),
cookieBaker,
new LegacyFlashCookieBaker(httpConfiguration.flash, httpConfiguration.secret, cookieSigner)
)
}
2019-12-06 09:39:42 -07:00
lazy val httpFilters = Seq(wire[lila.app.http.HttpFilter])
2019-12-06 10:17:46 -07:00
override lazy val httpErrorHandler = {
2020-07-08 12:47:36 -06:00
@nowarn def someRouter = router.some
@nowarn def mapper = devContext.map(_.sourceMapper)
2019-12-06 10:17:46 -07:00
wire[lila.app.http.ErrorHandler]
}
2019-12-05 08:46:00 -07:00
implicit def system = actorSystem
2019-12-13 07:30:20 -07:00
implicit def ws = wsClient
2019-12-05 08:46:00 -07:00
// dev assets
2019-12-13 22:14:46 -07:00
implicit def mimeTypes = fileMimeTypes
lazy val devAssetsController = wire[ExternalAssets]
2019-12-26 18:28:17 -07:00
lazy val shutdown = CoordinatedShutdown(system)
2019-12-05 08:46:00 -07:00
lazy val boot: lila.app.EnvBoot = wire[lila.app.EnvBoot]
2019-12-13 07:30:20 -07:00
lazy val env: lila.app.Env = boot.env
2019-12-05 08:46:00 -07:00
2019-12-13 07:30:20 -07:00
lazy val account: Account = wire[Account]
lazy val analyse: Analyse = wire[Analyse]
lazy val api: Api = wire[Api]
lazy val auth: Auth = wire[Auth]
lazy val blog: Blog = wire[Blog]
lazy val bookmark: Bookmark = wire[Bookmark]
lazy val playApi: PlayApi = wire[PlayApi]
2019-12-13 07:30:20 -07:00
lazy val challenge: Challenge = wire[Challenge]
lazy val coach: Coach = wire[Coach]
2020-01-16 07:40:33 -07:00
lazy val clas: Clas = wire[Clas]
2019-12-13 07:30:20 -07:00
lazy val coordinate: Coordinate = wire[Coordinate]
lazy val dasher: Dasher = wire[Dasher]
lazy val dev: Dev = wire[Dev]
lazy val editor: Editor = wire[Editor]
lazy val event: Event = wire[Event]
lazy val export: Export = wire[Export]
lazy val fishnet: Fishnet = wire[Fishnet]
lazy val forumCateg: ForumCateg = wire[ForumCateg]
lazy val forumPost: ForumPost = wire[ForumPost]
lazy val forumTopic: ForumTopic = wire[ForumTopic]
lazy val game: Game = wire[Game]
lazy val i18n: I18n = wire[I18n]
lazy val importer: Importer = wire[Importer]
lazy val insight: Insight = wire[Insight]
lazy val irwin: Irwin = wire[Irwin]
lazy val learn: Learn = wire[Learn]
lazy val lobby: Lobby = wire[Lobby]
lazy val main: Main = wire[Main]
2020-01-24 15:48:23 -07:00
lazy val msg: Msg = wire[Msg]
2019-12-13 07:30:20 -07:00
lazy val mod: Mod = wire[Mod]
lazy val notifyC: Notify = wire[Notify]
lazy val oAuthApp: OAuthApp = wire[OAuthApp]
lazy val oAuthToken: OAuthToken = wire[OAuthToken]
lazy val options: Options = wire[Options]
lazy val page: Page = wire[Page]
lazy val plan: Plan = wire[Plan]
lazy val practice: Practice = wire[Practice]
lazy val pref: Pref = wire[Pref]
lazy val prismic: Prismic = wire[Prismic]
lazy val push: Push = wire[Push]
lazy val puzzle: Puzzle = wire[Puzzle]
lazy val relation: Relation = wire[Relation]
lazy val relay: Relay = wire[Relay]
lazy val report: Report = wire[Report]
lazy val round: Round = wire[Round]
lazy val search: Search = wire[Search]
lazy val setup: Setup = wire[Setup]
lazy val simul: Simul = wire[Simul]
lazy val stat: Stat = wire[Stat]
lazy val streamer: Streamer = wire[Streamer]
lazy val study: Study = wire[Study]
lazy val team: Team = wire[Team]
lazy val timeline: Timeline = wire[Timeline]
lazy val tournament: Tournament = wire[Tournament]
2019-12-05 08:46:00 -07:00
lazy val tournamentCrud: TournamentCrud = wire[TournamentCrud]
2019-12-13 07:30:20 -07:00
lazy val tv: Tv = wire[Tv]
lazy val user: User = wire[User]
lazy val userAnalysis: UserAnalysis = wire[UserAnalysis]
2019-12-05 08:46:00 -07:00
lazy val userTournament: UserTournament = wire[UserTournament]
2019-12-13 07:30:20 -07:00
lazy val video: Video = wire[Video]
2020-04-29 10:31:34 -06:00
lazy val swiss: Swiss = wire[Swiss]
2019-12-05 08:46:00 -07:00
2019-12-05 20:01:24 -07:00
// eagerly wire up all controllers
2019-12-09 20:14:38 -07:00
val router: Router = {
2020-07-08 12:47:36 -06:00
@nowarn val prefix: String = "/"
2019-12-09 20:14:38 -07:00
wire[Routes]
}
2019-12-05 20:01:24 -07:00
2019-12-19 21:49:17 -07:00
if (configuration.get[Boolean]("kamon.enabled")) {
2019-12-05 20:01:24 -07:00
lila.log("boot").info("Kamon is enabled")
kamon.Kamon.loadModules()
}
2019-12-05 08:46:00 -07:00
}