62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import FastAPI
|
|
|
|
from zyrarbot.audio.track_factory import TrackFactory
|
|
from zyrarbot.music.music_player import MusicPlayer
|
|
from zyrarbot.settings import Settings
|
|
from zyrarbot.storage.guild_config_repository import GuildConfigRepository
|
|
from zyrarbot.storage.uploads_repository import UploadsRepository
|
|
from zyrarbot.ui.api.connection_manager import ConnectionManager
|
|
from zyrarbot.ui.api.routers import (
|
|
playback_router,
|
|
queue_router,
|
|
status_router,
|
|
uploads_router,
|
|
voice_router,
|
|
websocket_router,
|
|
)
|
|
from zyrarbot.ui.api.status_broadcaster import StatusBroadcaster
|
|
from zyrarbot.ui.api.status_service import StatusService
|
|
from zyrarbot.ui.bot.guild_resolver import GuildResolver
|
|
|
|
ROUTERS = (
|
|
status_router.router,
|
|
playback_router.router,
|
|
queue_router.router,
|
|
voice_router.router,
|
|
uploads_router.router,
|
|
websocket_router.router,
|
|
)
|
|
|
|
|
|
def mount_api(
|
|
app: FastAPI,
|
|
*,
|
|
settings: Settings,
|
|
player: MusicPlayer,
|
|
guilds: GuildResolver,
|
|
tracks: TrackFactory,
|
|
uploads: UploadsRepository,
|
|
config: GuildConfigRepository,
|
|
) -> StatusBroadcaster:
|
|
"""Konfiguruje stan API i podmontowuje jego routery do aplikacji."""
|
|
connections = ConnectionManager()
|
|
status_service = StatusService(player, guilds)
|
|
broadcaster = StatusBroadcaster(status_service, connections)
|
|
|
|
app.state.settings = settings
|
|
app.state.player = player
|
|
app.state.guilds = guilds
|
|
app.state.tracks = tracks
|
|
app.state.uploads = uploads
|
|
app.state.config = config
|
|
app.state.connections = connections
|
|
app.state.status_service = status_service
|
|
app.state.broadcaster = broadcaster
|
|
|
|
for router in ROUTERS:
|
|
app.include_router(router)
|
|
|
|
return broadcaster
|