initial client work

This commit is contained in:
Andrew Bryant 2023-12-17 14:21:41 -05:00
parent e14328c68b
commit e61396dd6a
4 changed files with 72 additions and 55 deletions

View File

@ -1,51 +1 @@
import requests from invoice_ninja.invoice_ninja import InvoiceNinja
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(url: str):
self.endpoint_url = url
def get_url():
return self.endpoint_url
def set_token(token: str):
self.api_token = token
def get_token():
return self.api_token
#def _get_headers(self, headers: dict = dict()):
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 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

View File

@ -1,6 +1,4 @@
from invoice_ninja import InvoiceNinja class BaseEndpoint(object):
class BaseEndpoint(InvoiceNinja):
def bulk(self, action: str): def bulk(self, action: str):
pass pass

View File

@ -1,5 +1,5 @@
from invoice_ninja.endpoints.base_endpoint import BaseEndpoint from invoice_ninja.endpoints.base_endpoint import BaseEndpoint
from invoice_ninja.types.client import Client from invoice_ninja.models.client import Client
import requests import requests

View File

@ -0,0 +1,69 @@
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