forked from lichess-org/lila
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAppLoader.scala
138 lines (120 loc) · 5.67 KB
/
AppLoader.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package lila.app
import akka.actor.CoordinatedShutdown
import com.softwaremill.macwire._
import play.api._
import play.api.libs.crypto.CookieSignerProvider
import play.api.mvc._
import play.api.mvc.request._
import play.api.routing.Router
import router.Routes
final class AppLoader extends ApplicationLoader {
def load(ctx: ApplicationLoader.Context): Application = new LilaComponents(ctx).application
}
final class LilaComponents(ctx: ApplicationLoader.Context)
extends BuiltInComponentsFromContext(ctx)
with _root_.controllers.AssetsComponents
with play.api.libs.ws.ahc.AhcWSComponents {
LoggerConfigurator(ctx.environment.classLoader).foreach {
_.configure(ctx.environment, ctx.initialConfiguration, Map.empty)
}
lila.log("boot").info {
val mem = Runtime.getRuntime().maxMemory() / 1024 / 1024
s"lila 3 / java ${System.getProperty("java.version")}, memory: ${mem}MB"
}
lila.mon.start(configuration.get[Boolean]("kamon.enabled"))
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)
)
}
lazy val httpFilters = Seq(wire[lila.app.http.HttpFilter])
override lazy val httpErrorHandler = {
def someRouter = router.some
def mapper = devContext.map(_.sourceMapper)
wire[lila.app.http.ErrorHandler]
}
implicit def system = actorSystem
implicit def ws = wsClient
// dev assets
implicit def mimeTypes = fileMimeTypes
lazy val devAssetsController = wire[ExternalAssets]
lazy val shutdown = CoordinatedShutdown(system)
lazy val boot: lila.app.EnvBoot = wire[lila.app.EnvBoot]
lazy val env: lila.app.Env = boot.env
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 bot: Bot = wire[Bot]
lazy val challenge: Challenge = wire[Challenge]
lazy val coach: Coach = wire[Coach]
lazy val clas: Clas = wire[Clas]
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]
lazy val message: Message = wire[Message]
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]
lazy val tournamentCrud: TournamentCrud = wire[TournamentCrud]
lazy val tv: Tv = wire[Tv]
lazy val user: User = wire[User]
lazy val userAnalysis: UserAnalysis = wire[UserAnalysis]
lazy val userTournament: UserTournament = wire[UserTournament]
lazy val video: Video = wire[Video]
// eagerly wire up all controllers
val router: Router = {
val prefix: String = "/"
wire[Routes]
}
if (configuration.get[Boolean]("kamon.enabled")) {
lila.log("boot").info("Kamon is enabled")
kamon.Kamon.loadModules()
}
}