Source code for tew652brp.core.base

from typing import Callable

import requests

from tew652brp.core.utils import make_routes


[docs]class BaseAct: """ Base class for actions ( requests to router ). Used to create custom actions. Usage:: >>> class GetConnectedDevicesAct(BaseAct): ... def __init__(self, request_method, url): ... super().__init__(request_method, url) ... params = { ... 'ccp_act': 'get', ... ..., ... } ... >>> resp = GetConnectedDevicesAct(...).submit() """ def __init__(self, request_method: Callable, url: str, **extra): """ :param request_method: method of Session ( from requests ). :param url: request url. :param extra: additional params e.g. login, id, password. """ self._req_method = request_method self._url = url self._params = {}
[docs] def submit(self) -> requests.Response: """ Executes a request method with parameters. """ return self._req_method(self._url, data=self._params)
[docs]class BaseHandler: """ Base class for handlers. Used to create custom handlers. Usage:: >>> class GetConnectedDevicesAct(BaseAct): ... ... >>> >>> class GetConnectedDevicesHandler(BaseHandler): ... def get_connected_devices(self): ... resp = GetConnectedDevicesAct( ... self._session.post, ... self._routes['get_set'] ... ).submit() ... ... # work with response ... return resp ... >>> handler = GetConnectedDevicesHandler() """ def __init__(self, session: requests.Session, url: str): self._session = session self._url = url self._routes = make_routes(self._url)