@@ -2,30 +2,6 @@ package dev.typetype.server
22import dev.typetype.server.cache.DragonflyService
33import dev.typetype.server.db.DatabaseFactory
44import dev.typetype.server.downloader.OkHttpDownloader
5- import dev.typetype.server.routes.avatarRoutes
6- import dev.typetype.server.routes.bulletCommentRoutes
7- import dev.typetype.server.routes.channelRoutes
8- import dev.typetype.server.routes.commentRoutes
9- import dev.typetype.server.routes.downloaderGatewayRoutes
10- import dev.typetype.server.routes.internalObservabilityRoutes
11- import dev.typetype.server.routes.manifestRoutes
12- import dev.typetype.server.routes.nicoVideoProxyRoutes
13- import dev.typetype.server.routes.oidcAuthRoutes
14- import dev.typetype.server.routes.podcastRoutes
15- import dev.typetype.server.routes.proxyRoutes
16- import dev.typetype.server.routes.publicPlaylistRoutes
17- import dev.typetype.server.routes.storyboardProxyRoutes
18- import dev.typetype.server.routes.searchRoutes
19- import dev.typetype.server.routes.streamRoutes
20- import dev.typetype.server.routes.suggestionRoutes
21- import dev.typetype.server.routes.adminSessionRoutes
22- import dev.typetype.server.routes.adminRoutes
23- import dev.typetype.server.routes.adminBugReportRoutes
24- import dev.typetype.server.routes.authRoutes
25- import dev.typetype.server.routes.trendingRoutes
26- import dev.typetype.server.routes.publicMetadataRoutes
27- import dev.typetype.server.routes.sessionActivityRoutes
28- import dev.typetype.server.routes.userDataRoutes
295import dev.typetype.server.services.ActiveSessionService
306import dev.typetype.server.services.AuthService
317import dev.typetype.server.services.AdminSettingsService
@@ -40,11 +16,12 @@ import dev.typetype.server.services.InstanceService
4016import dev.typetype.server.services.InternalHealthService
4117import dev.typetype.server.services.OidcAuthService
4218import dev.typetype.server.services.OidcConfigLoader
19+ import dev.typetype.server.services.OkHttpYoutubeRemoteBrowserClient
4320import dev.typetype.server.services.UserAdminService
21+ import dev.typetype.server.services.YoutubeRemoteBrowserConfig
22+ import dev.typetype.server.services.YoutubeRemoteBrowserService
4423import io.ktor.server.application.Application
4524import io.ktor.server.netty.EngineMain
46- import io.ktor.server.plugins.ratelimit.rateLimit
47- import io.ktor.server.routing.routing
4825import org.schabi.newpipe.extractor.NewPipe
4926import java.util.UUID
5027
@@ -67,53 +44,47 @@ fun Application.module() {
6744 val gitHubIssueService = GitHubIssueService ()
6845 val adminSettingsService = AdminSettingsService ()
6946 val activeSessionService = ActiveSessionService (adminSettingsService)
70- val instanceService = InstanceService (authService, adminSettingsService, oidcAuthService::publicConfig)
7147 val restoreService = PipePipeBackupImporterService ()
7248 val cacheUrl = System .getenv(" DRAGONFLY_URL" ) ? : " redis://localhost:6379"
7349 val subtitleServiceUrl = System .getenv(" SUBTITLE_SERVICE_URL" ) ? : " http://typetype-token:8081"
50+ val youtubeRemoteBrowserConfig = YoutubeRemoteBrowserConfig .fromEnvironment(subtitleServiceUrl)
51+ val instanceService = InstanceService (
52+ authService,
53+ adminSettingsService,
54+ youtubeRemoteLoginAvailable = { youtubeRemoteBrowserConfig.isConfigured },
55+ oidcConfigProvider = oidcAuthService::publicConfig,
56+ )
7457 val downloaderServiceUrl = System .getenv(" DOWNLOADER_SERVICE_URL" ) ? : " http://typetype-downloader:18093"
7558 val youtubeSessionEncryptionKey = System .getenv(" YOUTUBE_SESSION_ENCRYPTION_KEY" )
7659 ? : error(" YOUTUBE_SESSION_ENCRYPTION_KEY is required" )
7760 val cache = DragonflyService (cacheUrl)
7861 val svc = ServiceRegistry (cache, subtitleServiceUrl, youtubeSessionEncryptionKey)
62+ val youtubeRemoteBrowserService = YoutubeRemoteBrowserService (
63+ youtubeRemoteBrowserConfig,
64+ adminSettingsService,
65+ svc.youtubeSessionService,
66+ OkHttpYoutubeRemoteBrowserClient (youtubeRemoteBrowserConfig.serviceUrl),
67+ )
7968 val downloaderGatewayService = DownloaderGatewayService (downloaderServiceUrl)
8069 val openMojiProxyService = OpenMojiProxyService (cache)
8170 val internalHealthService = InternalHealthService (cache, downloaderGatewayService, subtitleServiceUrl)
8271 configurePlugins(authService)
83- routing {
84- internalObservabilityRoutes(internalHealthService::check)
85- publicMetadataRoutes(instanceService::getInstance)
86- rateLimit(STREAMS_ZONE ) {
87- streamRoutes(svc.streamService, authService, svc.youtubeSessionStreamService::getStreamInfo)
88- manifestRoutes(svc.manifestService, svc.nativeManifestService, svc.hlsManifestService)
89- }
90- rateLimit(EXTRACTION_ZONE ) {
91- searchRoutes(svc.searchService)
92- suggestionRoutes(svc.suggestionService)
93- trendingRoutes(svc.trendingService)
94- publicPlaylistRoutes(svc.publicPlaylistService)
95- commentRoutes(svc.commentService)
96- bulletCommentRoutes(svc.bulletCommentService)
97- }
98- rateLimit(CHANNEL_ZONE ) {
99- channelRoutes(svc.channelService)
100- podcastRoutes(svc.podcastService)
101- }
102- rateLimit(PROXY_ZONE ) {
103- proxyRoutes(svc.proxyService)
104- nicoVideoProxyRoutes(svc.nicoVideoProxyService)
105- }
106- rateLimit(PROXY_STORYBOARD_ZONE ) {
107- storyboardProxyRoutes(svc.proxyService)
108- }
109- downloaderGatewayRoutes(downloaderGatewayService)
110- oidcAuthRoutes(oidcAuthService, adminSettingsService)
111- authRoutes(authService, passwordResetService, profileService, adminSettingsService, svc.homeRecommendationWarmupService)
112- adminRoutes(authService, userAdminService, passwordResetService, adminSettingsService)
113- adminSessionRoutes(authService, activeSessionService)
114- sessionActivityRoutes(authService, activeSessionService)
115- adminBugReportRoutes(authService, svc.bugReportService, gitHubIssueService)
116- avatarRoutes(avatarService, openMojiProxyService)
117- rateLimit(USER_DATA_ZONE ) { userDataRoutes(svc, authService, profileService, avatarService, svc.bugReportService, restoreService) }
118- }
72+ installApplicationRoutes(
73+ svc = svc,
74+ authService = authService,
75+ adminSettingsService = adminSettingsService,
76+ activeSessionService = activeSessionService,
77+ downloaderGatewayService = downloaderGatewayService,
78+ gitHubIssueService = gitHubIssueService,
79+ instanceService = instanceService,
80+ oidcAuthService = oidcAuthService,
81+ passwordResetService = passwordResetService,
82+ profileService = profileService,
83+ userAdminService = userAdminService,
84+ avatarService = avatarService,
85+ openMojiProxyService = openMojiProxyService,
86+ internalHealthService = internalHealthService,
87+ restoreService = restoreService,
88+ youtubeRemoteBrowserService = youtubeRemoteBrowserService,
89+ )
11990}
0 commit comments