Source code for amiibo.client

from .errors import *
from .httpclient import HTTP, AsyncHTTP

[docs]class Client(object): """Represent a Amiibo Client to perform requests with API""" __slots__ = ("_http",) def __init__(self) -> None: self._http = HTTP()
[docs] def last_updated(self) -> dict: """Get the timestamp where the amiibo API was last updated.""" endpoint = "api/lastupdated/" req = self._http.get(endpoint) return req
[docs] def get_amiibos(self) -> dict: """Return a list of amiibos available in the API""" endpoint = "api/amiibo/" req = self._http.get(endpoint) return req
[docs] def get_amiibo(self, **kwargs) -> dict: """Return the information about a single amiibo with given arguments Available arguments: head, tail, name, type If head and tail is given other params would be ignored and request as id=head+tail For more information see: https://amiiboapi.com/docs/#amiibo """ head = kwargs.get("head") tail = kwargs.get("tail") name = kwargs.get("name") amiiboo_type = kwargs.get("type") if head and tail: amiibo_id = head + tail endpoint = "api/amiibo/?id={}".format(amiibo_id) req = self._http.get(endpoint) return req elif name != None and amiiboo_type != None: endpoint = "api/amiibo/?name={}&type={}".format(name, amiiboo_type) req = self._http.get(endpoint) return req else: raise MissingArgumet("Either head, tail or name, type should be given")
[docs] def get_type(self, amiibo_type: str) -> dict: """Get all the amiibo based on it's type as a list. Parameters ---------- amiibo_type: :class:`str` The amiibo type. Eg. `0x02`, `yarn` """ endpoint = "api/amiibo/?type={}".format(amiibo_type) req = self._http.get(endpoint) return req
[docs] def get_gameseries(self, gameseries: str) -> dict: """Get all the amiibo based on it's game series as a list. Parameters ---------- gameseries: :class:`str` The gameseries to request. """ endpoint = "api/amiibo/?gameseries={}".format(gameseries) req = self._http.get(endpoint) return req
[docs] def get_series(self, amiiboSeries: str) -> dict: """Get all the amiibo based on it's series as a list. Parameters ---------- amiiboSeries: :class:`str` The series to get the data """ endpoint = "api/amiibo/?amiiboSeries={}".format(amiiboSeries) req = self._http.get(endpoint) return req
[docs] def get_character(self, character: str) -> dict: """Get all the amiibo based on it's character as a list Parameters ---------- character: :class:`str` the character to get the data """ endpoint = "api/amiibo/?character={}".format(character) req = self._http.get(endpoint) return req
[docs] def get_types(self) -> dict: """Get all the amiibo's type available in the API as a list""" endpoint = "/api/type" req = self._http.get(endpoint) return req
[docs] def get_type_by_id(self, type_id: str) -> dict: """Get type by it's id Parameters ---------- type_id: :class:`str` The type id to get the data """ endpoint = "api/type?key={}".format(type_id) req = self._http.get(endpoint) return req
[docs] def get_type_by_name(self, name: str) -> dict: """Get type by it's name Parameters ---------- name: :class:`str` The name to get the data """ endpoint = "api/type?name={}".format(name) req = self._http.get(endpoint) return req
[docs] def get_gameserieses(self) -> dict: """Retrieve game series information, not all data return a list""" endpoint = "api/gameseries/" req = self._http.get(endpoint) return req
[docs] def get_gameseries_by_key(self, key: str) -> dict: """It just return the game series that the key belongs to, since 1 key only belongs to 1 game series Parameters ---------- key: :class:`str` The key that we need to get the data """ endpoint = "api/gameseries?key={}".format(key) req = self._http.get(endpoint) return req
[docs] def get_gameseries_keys(self, name: str) -> dict: """It return a list of keys available for the game series Parameters ---------- name: :class:`str` The gameseries name which we need to fetch the data. """ endpoint = "api/gameseries?name={}".format(name) req = self._http.get(endpoint) return req
[docs] def get_serieses(self) -> dict: """Get all the amiibo's series available in the API as a list.""" endpoint = "api/amiiboseries/" req = self._http.get(endpoint) return req
[docs] def get_series_by_key(self, key: str) -> dict: """Get the amiibo series by it's key Parameters ---------- key: :class:`str` The key that we need to get the data """ endpoint = "api/amiiboseries?key={}".format(key) req = self._http.get(endpoint) return req
[docs] def get_series_by_name(self, name: str) -> dict: """Get the amiibo series by it's name Parameters ---------- name: :class:`str` The name that we need to get the data """ endpoint = "api/amiiboseries?name={}".format(name) req = self._http.get(endpoint) return req
[docs] def get_characters(self) -> dict: """Get all the character available in the API as a list.""" endpoint = "api/character" req = self._http.get(endpoint) return req
[docs] def get_character_by_key(self, key: str) -> dict: """Get the character by it's key Parameters ---------- key: :class:`str` The key that we use to get the data """ endpoint = "api/character?key={}".format(key) req = self._http.get(endpoint) return req
[docs] def get_character_by_name(self, name: str) -> dict: """Get the character by it's key Parameters ---------- name: :class:`str` The name that we use to get the data """ endpoint = "api/character?name={}".format(name) req = self._http.get(endpoint) return req
[docs]class AsyncClient(object): """Represent a Amiibo Client to perform requests with API""" __slots__ = ("_http",) async def __init__(self) -> None: self._http = AsyncHTTP()
[docs] async def last_updated(self) -> dict: """Get the timestamp where the amiibo API was last updated.""" endpoint = "api/lastupdated/" req = await self._http.get(endpoint) return req
[docs] async def get_amiibos(self) -> dict: """Return a list of amiibos available in the API""" endpoint = "api/amiibo/" req = await self._http.get(endpoint) return req
[docs] async def get_amiibo(self, **kwargs) -> dict: """Return the information about a single amiibo with given arguments Available arguments: head, tail, name, type If head and tail is given other params would be ignored and request as id=head+tail For more information see: https://amiiboapi.com/docs/#amiibo """ head = kwargs.get("head") tail = kwargs.get("tail") name = kwargs.get("name") amiiboo_type = kwargs.get("type") if head and tail: amiibo_id = head + tail endpoint = "api/amiibo/?id={}".format(amiibo_id) req = await self._http.get(endpoint) return req elif name != None and amiiboo_type != None: endpoint = "api/amiibo/?name={}&type={}".format(name, amiiboo_type) req = await self._http.get(endpoint) return req else: raise MissingArgumet("Either head, tail or name, type should be given")
[docs] async def get_type(self, amiibo_type: str) -> dict: """Get all the amiibo based on it's type as a list. Parameters ---------- amiibo_type: :class:`str` The amiibo type. Eg. `0x02`, `yarn` """ endpoint = "api/amiibo/?type={}".format(amiibo_type) req = await self._http.get(endpoint) return req
[docs] async def get_gameseries(self, gameseries: str) -> dict: """Get all the amiibo based on it's game series as a list. Parameters ---------- gameseries: :class:`str` The gameseries to request. """ endpoint = "api/amiibo/?gameseries={}".format(gameseries) req = await self._http.get(endpoint) return req
[docs] async def get_series(self, amiiboSeries: str) -> dict: """Get all the amiibo based on it's series as a list. Parameters ---------- amiiboSeries: :class:`str` The series to get the data """ endpoint = "api/amiibo/?amiiboSeries={}".format(amiiboSeries) req = await self._http.get(endpoint) return req
[docs] async def get_character(self, character: str) -> dict: """Get all the amiibo based on it's character as a list Parameters ---------- character: :class:`str` the character to get the data """ endpoint = "api/amiibo/?character={}".format(character) req = await self._http.get(endpoint) return req
[docs] async def get_types(self) -> dict: """Get all the amiibo's type available in the API as a list""" endpoint = "/api/type" req = await self._http.get(endpoint) return req
[docs] async def get_type_by_id(self, type_id: str) -> dict: """Get type by it's id Parameters ---------- type_id: :class:`str` The type id to get the data """ endpoint = "api/type?key={}".format(type_id) req = await self._http.get(endpoint) return req
[docs] async def get_type_by_name(self, name: str) -> dict: """Get type by it's name Parameters ---------- name: :class:`str` The name to get the data """ endpoint = "api/type?name={}".format(name) req = await self._http.get(endpoint) return req
[docs] async def get_gameserieses(self) -> dict: """Retrieve game series information, not all data return a list""" endpoint = "api/gameseries/" req = await self._http.get(endpoint) return req
[docs] async def get_gameseries_by_key(self, key: str) -> dict: """It just return the game series that the key belongs to, since 1 key only belongs to 1 game series Parameters ---------- key: :class:`str` The key that we need to get the data """ endpoint = "api/gameseries?key={}".format(key) req = await self._http.get(endpoint) return req
[docs] async def get_gameseries_keys(self, name: str) -> dict: """It return a list of keys available for the game series Parameters ---------- name: :class:`str` The gameseries name which we need to fetch the data. """ endpoint = "api/gameseries?name={}".format(name) req = await self._http.get(endpoint) return req
[docs] async def get_serieses(self) -> dict: """Get all the amiibo's series available in the API as a list.""" endpoint = "api/amiiboseries/" req = await self._http.get(endpoint) return req
[docs] async def get_series_by_key(self, key: str) -> dict: """Get the amiibo series by it's key Parameters ---------- key: :class:`str` The key that we need to get the data """ endpoint = "api/amiiboseries?key={}".format(key) req = await self._http.get(endpoint) return req
[docs] async def get_series_by_name(self, name: str) -> dict: """Get the amiibo series by it's name Parameters ---------- name: :class:`str` The name that we need to get the data """ endpoint = "api/amiiboseries?name={}".format(name) req = await self._http.get(endpoint) return req
[docs] async def get_characters(self) -> dict: """Get all the character available in the API as a list.""" endpoint = "api/character" req = await self._http.get(endpoint) return req
[docs] async def get_character_by_key(self, key: str) -> dict: """Get the character by it's key Parameters ---------- key: :class:`str` The key that we use to get the data """ endpoint = "api/character?key={}".format(key) req = await self._http.get(endpoint) return req
[docs] async def get_character_by_name(self, name: str) -> dict: """Get the character by it's key Parameters ---------- name: :class:`str` The name that we use to get the data """ endpoint = "api/character?name={}".format(name) req = await self._http.get(endpoint) return req