31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
import datetime
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from gallery.easel.core import AppRequest
|
|
from gallery.easel.depends.weather import WeatherApiDepends
|
|
from gallery.sketch.weather.api import WeatherApi
|
|
from gallery.sketch.weather.model import Location, WeatherResponse
|
|
|
|
router = APIRouter(prefix="/weather", tags=["Weather"])
|
|
|
|
|
|
@router.get("/providers")
|
|
async def get_api_weather_providers(request: AppRequest) -> list[str]:
|
|
return request.app.state.api.get_api_providers(WeatherApi)
|
|
|
|
|
|
@router.get("/{provider}/locations")
|
|
async def find_api_weather_locations(weather_api: WeatherApiDepends, query: str) -> list[Location]:
|
|
return await weather_api.find_locations(query)
|
|
|
|
|
|
@router.get("/{provider}/{location}/day/{date}")
|
|
async def get_api_weather_day(weather_api: WeatherApiDepends, location: str, date: datetime.date) -> WeatherResponse:
|
|
return await weather_api.get_day(location, date)
|
|
|
|
|
|
@router.get("/{provider}/{location}/days/{days}")
|
|
async def get_api_weather_days(weather_api: WeatherApiDepends, location: str, days: int) -> WeatherResponse:
|
|
return await weather_api.get_days(location, days)
|