54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
from uuid import UUID
|
|
|
|
from scryfall.client.route import Route
|
|
from scryfall.models.api import APIList
|
|
from scryfall.models.sets import Set
|
|
from scryfall.models.internal.protocols import CanRequest
|
|
|
|
|
|
class SetRequests(CanRequest):
|
|
async def get_all_sets(self) -> APIList:
|
|
"""Get all MTG sets."""
|
|
result = await self.request(Route("GET", "/sets"))
|
|
|
|
result["_client"] = self
|
|
return APIList(**result)
|
|
|
|
async def get_set_by_id(self, id: str | UUID) -> Set:
|
|
"""
|
|
Get MTG set by ID.
|
|
|
|
Args:
|
|
id: UUID of set
|
|
|
|
"""
|
|
result = await self.request(Route("GET", f"/sets/{id}"))
|
|
|
|
result["_client"] = self
|
|
return Set(**result)
|
|
|
|
async def get_set_by_code(self, code: str) -> Set:
|
|
"""
|
|
Get MTG set by set code.
|
|
|
|
Args:
|
|
code: Set code
|
|
|
|
"""
|
|
result = await self.request(Route("GET", f"/sets/{code}"))
|
|
|
|
result["_client"] = self
|
|
return Set(**result)
|
|
|
|
async def get_set_by_tcgplayer_id(self, id: int) -> Set:
|
|
"""
|
|
Get MTG set by TCGPlayer ID.
|
|
|
|
Args:
|
|
id: TCGPlayer ID of set
|
|
|
|
"""
|
|
result = await self.request(Route("GET", f"/sets/tcgplayer/{id}"))
|
|
|
|
result["_client"] = self
|
|
return Set(**result)
|