Files
zyrarbot/zyrarbot/ui/api/factory.py
T

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