diff --git a/gallery/easel/__init__.py b/gallery/easel/__init__.py index d3e357a..c46b510 100644 --- a/gallery/easel/__init__.py +++ b/gallery/easel/__init__.py @@ -4,8 +4,7 @@ from fastapi.staticfiles import StaticFiles from gallery.sketch.bundle import ApiBundle from gallery.util import root_path -from .route import api, doc -from .route.view import router as view_router +from .route import api, doc, view def build_app(api_bundle: ApiBundle) -> FastAPI: @@ -17,6 +16,6 @@ def build_app(api_bundle: ApiBundle) -> FastAPI: app.state.api = api_bundle app.mount("/static", StaticFiles(directory=root_path / "static/dist")) doc.mount(app) - api.mount(app) - app.include_router(view_router) + app.include_router(api.router) + app.include_router(view.router) return app diff --git a/gallery/easel/route/api/__init__.py b/gallery/easel/route/api/__init__.py index fcfa3fe..dc262dd 100644 --- a/gallery/easel/route/api/__init__.py +++ b/gallery/easel/route/api/__init__.py @@ -1,8 +1,7 @@ -from fastapi import FastAPI +from fastapi import APIRouter from . import schedule, weather - -def mount(app: FastAPI): - weather.mount(app) - schedule.mount(app) +router = APIRouter(prefix="/api", tags=["API"]) +router.include_router(weather.router) +router.include_router(schedule.router) diff --git a/gallery/easel/route/api/schedule.py b/gallery/easel/route/api/schedule.py index ca9a702..ea9d39a 100644 --- a/gallery/easel/route/api/schedule.py +++ b/gallery/easel/route/api/schedule.py @@ -1,18 +1,20 @@ import datetime -from fastapi import FastAPI +from fastapi import APIRouter from gallery.easel.core import AppRequest from gallery.sketch.schedule.model import ChannelId, Schedule +router = APIRouter(prefix="/schedule") -def mount(app: FastAPI): - @app.get("/api/schedule/channels", tags=["API"]) - async def get_api_schedule_channels(request: AppRequest) -> list[ChannelId]: - schedule_api = request.app.state.api.schedule - return await schedule_api.get_channels() - @app.get("/api/schedule/{channel}/{date}", tags=["API"]) - async def get_api_schedule_channel_schedule(request: AppRequest, channel: str, date: datetime.date) -> Schedule: - schedule_api = request.app.state.api.schedule - return await schedule_api.get_channel_schedule(ChannelId(channel), date) +@router.get("/channels") +async def get_api_schedule_channels(request: AppRequest) -> list[ChannelId]: + schedule_api = request.app.state.api.schedule + return await schedule_api.get_channels() + + +@router.get("/{channel}/{date}") +async def get_api_schedule_channel_schedule(request: AppRequest, channel: str, date: datetime.date) -> Schedule: + schedule_api = request.app.state.api.schedule + return await schedule_api.get_channel_schedule(ChannelId(channel), date) diff --git a/gallery/easel/route/api/weather.py b/gallery/easel/route/api/weather.py index eb455a5..c763927 100644 --- a/gallery/easel/route/api/weather.py +++ b/gallery/easel/route/api/weather.py @@ -1,23 +1,26 @@ import datetime -from fastapi import FastAPI +from fastapi import APIRouter from gallery.easel.core import AppRequest from gallery.sketch.weather.model import Location, WeatherResponse +router = APIRouter(prefix="/weather") -def mount(app: FastAPI): - @app.get("/api/weather/locations", tags=["API"]) - async def get_api_weather_locations(request: AppRequest, query: str) -> list[Location]: - weather_api = request.app.state.api.weather - return await weather_api.find_locations(query) - @app.get("/api/weather/{location}/day/{date}", tags=["API"]) - async def get_api_weather_day(request: AppRequest, location: str, date: datetime.date) -> WeatherResponse: - weather_api = request.app.state.api.weather - return await weather_api.get_day(location, date) +@router.get("/locations") +async def get_api_weather_locations(request: AppRequest, query: str) -> list[Location]: + weather_api = request.app.state.api.weather + return await weather_api.find_locations(query) - @app.get("/api/weather/{location}/days/{days}", tags=["API"]) - async def get_api_weather_days(request: AppRequest, location: str, days: int) -> WeatherResponse: - weather_api = request.app.state.api.weather - return await weather_api.get_days(location, days) + +@router.get("/{location}/day/{date}") +async def get_api_weather_day(request: AppRequest, location: str, date: datetime.date) -> WeatherResponse: + weather_api = request.app.state.api.weather + return await weather_api.get_day(location, date) + + +@router.get("/{location}/days/{days}") +async def get_api_weather_days(request: AppRequest, location: str, days: int) -> WeatherResponse: + weather_api = request.app.state.api.weather + return await weather_api.get_days(location, days) diff --git a/gallery/easel/route/view/__init__.py b/gallery/easel/route/view/__init__.py index 303a42d..00dce0e 100644 --- a/gallery/easel/route/view/__init__.py +++ b/gallery/easel/route/view/__init__.py @@ -5,7 +5,7 @@ from .schedule import router as schedule_router from .translation import set_language from .weather import router as weather_router -router = APIRouter(dependencies=[Depends(set_language)]) +router = APIRouter(tags=["view"], dependencies=[Depends(set_language)]) router.include_router(common_router) router.include_router(weather_router) router.include_router(schedule_router)