pyinvoiceninja/invoice_ninja/http_client.py

58 lines
1.5 KiB
Python

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)