import requests class Request(object): def __init__(self, url, headers=None): self.headers = { 'Accept': 'application/json' } if headers: self.headers.update(headers) self.BASE_URL = url def get(self, endpoint: str, headers=None, **kwargs): r = requests.get( self.BASE_URL + endpoint, headers={**headers, **self.headers} if headers else self.headers, **kwargs ) r.raise_for_status() return r.json() def post(self, endpoint: str, headers=None, **kwargs): r = requests.post( self.BASE_URL + endpoint, headers={**headers, **self.headers} if headers else self.headers, **kwargs ) r.raise_for_status() return r.json() def put(self, endpoint: str, headers=None, **kwargs): r = requests.put( self.BASE_URL + endpoint, headers={**headers, **self.headers} if headers else self.headers, **kwargs ) r.raise_for_status() return r.json() def delete(self, endpoint: str, headers=None, **kwargs): r = requests.delete( self.BASE_URL + endpoint, headers={**headers, **self.headers} if headers else self.headers, **kwargs ) r.raise_for_status() return r.json() class AdminRequest(Request): def __init__(self, hostname, admin_username, admin_password, **kwargs): self.username = admin_username url = f'{admin_username}:{admin_password}@{hostname}/' super().__init__('http://' + url) def __str__(self): return f'admin user: {self.username}' class TokenRequest(Request): def __init__(self, hostname, token: str, **kwargs): self.token = token super().__init__(f'http://{hostname}/', { 'Authorization': 'Bearer ' + token }) def __str__(self): return f'token {self.token}'