Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
namara-python / client.py
Size: Mime:
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)