pyinvoiceninja/invoice_ninja/invoice_ninja.py
2023-12-17 14:21:41 -05:00

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