70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
import requests
|
|
|
|
class InvoiceNinja(object):
|
|
API_V1 = 'api/v1'
|
|
|
|
def __init__(self,
|
|
endpoint_url: str = 'https://invoicing.co',
|
|
api_token: str = str()):
|
|
self.endpoint_url = '{}/{}'.format(endpoint_url, self.API_V1)
|
|
self.api_token = api_token
|
|
self.headers = dict()
|
|
|
|
def set_url(self, url: str):
|
|
self.endpoint_url = url
|
|
|
|
def get_url(self):
|
|
return self.endpoint_url
|
|
|
|
def set_token(self, token: str):
|
|
self.api_token = token
|
|
|
|
def get_token(self):
|
|
return self.api_token
|
|
|
|
def get_headers(self):
|
|
"""Get HTTP headers for request."""
|
|
|
|
return self.headers
|
|
|
|
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': self.api_token,
|
|
'X-Requested-With': 'XMLHttpRequest'}
|
|
|
|
return self.headers.update(headers)
|
|
|
|
def send(self, uri: str, payload: dict, method: str = 'get'):
|
|
url = '{}/{}'.format(self.endpoint_url, uri)
|
|
|
|
if method == 'get':
|
|
return requests.get(url, params=payload)
|
|
|
|
if method == 'post':
|
|
return requests.post(url, params=payload)
|
|
|
|
|
|
def ping(self):
|
|
'''
|
|
Ping Invoice Ninja instance.
|
|
'''
|
|
server_response = requests.get(url=self._get_url_for(),
|
|
headers=self.build_headers())
|
|
|
|
if server_response.ok:
|
|
return True
|
|
|
|
else:
|
|
return False
|
|
|