import requests class HTTPClient(object): """HTTP client for Invoice Ninja REST API.""" def __init__(self, endpoint_url: str = 'https://invoicing.co', api_token: str = str()): self_endpoint_url = 'https://invoicing.co' self._api_token = str() self._headers = dict() @property def endpoint_url(self): return self._endpoint_url @endpoint_url.setter def endpoint_url(self, endpoint_url: str): self._endpoint_url = endpoint_url @property def api_token(self): return self._api_token @api_token.setter def api_token(self, api_token: str): self._api_token = api_token def add_headers(self, headers: dict): """Add HTTP headers to request.""" self._headers.update(headers) def build_headers(self): """Build Invoice Ninja API headers for request. A header dictionary with the API token is returned by default. """ headers = { 'X-API-TOKEN': _api_token, 'X-Requested-With': 'XMLHttpRequest'} return self._headers.update(headers) def send(self, uri: str, payload: dict, method: str = 'get'): """Send request to Invoice Ninja REST API.""" url = '{}/{}'.format(endpoint_url, uri) if method == 'get': return requests.get(url, params=payload) elif method == 'post': return requests.post(url, params=payload)