Code source de artifacts.api.tasks

from __future__ import annotations

from typing import Optional, TYPE_CHECKING

from ..models.enums import Skill, TaskType
from ..models.monsters import DropRateSchema
from ..models.pagination import DataPage
from ..models.tasks import TaskFullSchema

if TYPE_CHECKING:
    from ..http import HttpClient


[docs] class TasksAPI: """Task game-data endpoints (public, no auth)."""
[docs] def __init__(self, http: HttpClient): self._http = http
[docs] async def get_all( self, *, min_level: Optional[int] = None, max_level: Optional[int] = None, skill: Optional[Skill] = None, type: Optional[TaskType] = None, page: int = 1, size: int = 50, ) -> DataPage[TaskFullSchema]: """GET /tasks/list""" params = { "min_level": min_level, "max_level": max_level, "skill": skill, "type": type, "page": page, "size": size, } return await self._http.get_page( "/tasks/list", TaskFullSchema, params=params )
[docs] async def get(self, code: str) -> TaskFullSchema: """GET /tasks/list/{code}""" return await self._http.get_model( f"/tasks/list/{code}", TaskFullSchema )
[docs] async def get_all_rewards( self, *, page: int = 1, size: int = 50 ) -> DataPage[DropRateSchema]: """GET /tasks/rewards""" params = {"page": page, "size": size} return await self._http.get_page( "/tasks/rewards", DropRateSchema, params=params )
[docs] async def get_reward(self, code: str) -> DropRateSchema: """GET /tasks/rewards/{code}""" return await self._http.get_model( f"/tasks/rewards/{code}", DropRateSchema )