Source code for wxc_sdk.api_child

from dataclasses import dataclass

from .base import StrOrDict
from .rest import RestSession

__all__ = ['ApiChild']


[docs] @dataclass(init=False) class ApiChild: """ Base class for child APIs of :class:`WebexSimpleApi` """ session: RestSession def __init__(self, *, session: RestSession, base: str = None): #: REST session self.session = session if base: self.base = base # noinspection PyMethodOverriding def __init_subclass__(cls, base: str): """ Subclass registration hook. Each APIChild has a specific endpoint prefix which we gather at subclass registration time- :param base: APIChild specific URL path """ super().__init_subclass__() # save endpoint prefix cls.base = base
[docs] def ep(self, path: str = None): """ endpoint URL for given path :param path: path after APIChild subclass specific endpoint URI prefix :type path: str :return: endpoint URL :rtype: str """ path = path and f'/{path}' or '' return self.session.ep(f'{self.base}{path}')
[docs] def get(self, *args, **kwargs) -> StrOrDict: """ GET request :param args: :param kwargs: :return: """ return self.session.rest_get(*args, **kwargs)
[docs] def post(self, *args, **kwargs) -> StrOrDict: """ POST request :param args: :param kwargs: :return: """ return self.session.rest_post(*args, **kwargs)
[docs] def put(self, *args, **kwargs) -> StrOrDict: """ PUT request :param args: :param kwargs: :return: """ return self.session.rest_put(*args, **kwargs)
[docs] def delete(self, *args, **kwargs) -> None: """ DELETE request :param args: :param kwargs: """ self.session.rest_delete(*args, **kwargs)
[docs] def patch(self, *args, **kwargs) -> StrOrDict: """ PATCH request :param args: :param kwargs: """ return self.session.rest_patch(*args, **kwargs)