from __future__ import annotations
from typing import Optional, TYPE_CHECKING
from ..models.enums import MonsterType
from ..models.monsters import MonsterSchema
from ..models.pagination import DataPage
if TYPE_CHECKING:
from ..http import HttpClient
[docs]
class MonstersAPI:
"""Monster endpoints (public, no auth)."""
[docs]
def __init__(self, http: HttpClient):
self._http = http
[docs]
async def get_all(
self,
*,
name: Optional[str] = None,
min_level: Optional[int] = None,
max_level: Optional[int] = None,
drop: Optional[str] = None,
page: int = 1,
size: int = 50,
) -> DataPage[MonsterSchema]:
"""GET /monsters"""
params = {
"name": name,
"min_level": min_level,
"max_level": max_level,
"drop": drop,
"page": page,
"size": size,
}
return await self._http.get_page(
"/monsters", MonsterSchema, params=params
)
[docs]
async def get(self, code: str) -> MonsterSchema:
"""GET /monsters/{code}"""
return await self._http.get_model(f"/monsters/{code}", MonsterSchema)