Repository URL to install this package:
|
Version:
0.9.1 ▾
|
namara-python
/
client.py
|
|---|
import requests, os
from dotenv import load_dotenv
from urllib import parse
from namara_python.query import Query
import namara_python.method_generator as _ # auto generates all the necessary methods for most classes
load_dotenv()
LOGIN_PATH = 'users/jwt.json'
class Client:
def __init__(self, *args, **kwargs):
self.api_key = kwargs.get('api_key', os.getenv('NAMARA_API_KEY'))
if not self.api_key:
raise AttributeError('Missing api_key')
self.base_auth_url = kwargs.get('auth_url', os.getenv('NAMARA_AUTH_URL'))
self.base_api_url = kwargs.get('api_url', os.getenv('NAMARA_API_URL'))
if (not self.base_auth_url) or (not self.base_api_url):
raise AttributeError('Missing NAMARA_AUTH_URL or NAMRA_API_URL environment variable')
url = self._construct_auth_url()
response = requests.post(url, headers={'X-API-Key': self.api_key})
if response.status_code != requests.codes.ok:
response.raise_for_status()
token = response.json().get('jwt')
if not token:
response.status_code = 401
response.raise_for_status()
self.token = token
def query_client(self):
return Query(self)
def _construct_auth_url(self):
return parse.urljoin(self.base_auth_url, LOGIN_PATH)