gulag/client/python/libgulag.py
2018-12-28 20:09:28 +01:00

50 lines
1.4 KiB
Python

import requests,json,sys
class GulagClientException(Exception):
message = None
def __init__(self,message):
self.message = message
class GulagClient:
api_uri = None
api_key = None
headers = None
def __init__(self,args):
self.api_uri = args['api_uri']
self.api_key = args['api_key']
self.headers = {
'Content-Type': 'application/json',
'API_KEY': self.api_key
}
def whoami(self):
return type(self).__name__ + "::" + sys._getframe(1).f_code.co_name + "(): "
def handle_response(self,response):
if response.status_code == 200:
return json.loads(response.content.decode('utf-8'))
elif response.status_code == 400 or response.status_code == 500:
error = json.loads(response.content.decode('utf-8'))
raise GulagClientException(self.whoami() + error['message'])
def get_quarmails(self,args):
if 'filters' in args:
try:
# jqgrid-style filters must be JSON-encoded
args['filters'] = json.dumps(args['filters'])
except TypeError as e:
raise GulagClientException(e.__str__)
try:
response = requests.get(
self.api_uri + '/api/v1/quarmails',
headers=self.headers,
params=args
)
except Exception as e:
raise GulagClientException(self.whoami() + str(e)) from e
try:
return self.handle_response(response)
except GulagClientException as e:
raise GulagClientException(self.whoami() + e.message) from e