2018-12-16 02:17:29 -06:00
|
|
|
import requests
|
|
|
|
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
class TaskService(object):
|
2019-01-19 23:24:53 -06:00
|
|
|
UUID = 'uuid'
|
|
|
|
DESCRIPTION = 'description'
|
|
|
|
TAGS = 'tags'
|
|
|
|
ANNOTATIONS = 'annotations'
|
|
|
|
ENTRY = 'entry'
|
|
|
|
DONE = 'done'
|
|
|
|
DUE = 'due'
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-16 02:17:29 -06:00
|
|
|
def __init__(self, **entries):
|
|
|
|
self.__dict__.update(entries)
|
|
|
|
|
|
|
|
def findAll():
|
|
|
|
raise NotImplementedError()
|
|
|
|
|
|
|
|
def modify():
|
|
|
|
raise NotImplementedError()
|
|
|
|
|
|
|
|
|
|
|
|
class RestService(object):
|
|
|
|
def __init__(self, api_url, json=False):
|
|
|
|
self.api_url = api_url
|
|
|
|
self.headers = {}
|
|
|
|
self.json = json
|
|
|
|
|
2018-12-22 01:07:43 -06:00
|
|
|
def get(self, path, id=None):
|
2018-12-16 02:17:29 -06:00
|
|
|
|
2018-12-22 01:07:43 -06:00
|
|
|
# TODO: change this to a single pattern assume a pattern then stick with it
|
2018-12-16 02:17:29 -06:00
|
|
|
if self.api_url.endswith('/'):
|
|
|
|
url = '{0}{1}'.format(self.api_url, path[1:])
|
|
|
|
else:
|
|
|
|
url = '{0}{1}'.format(self.api_url, path)
|
|
|
|
|
2018-12-22 01:07:43 -06:00
|
|
|
if id:
|
|
|
|
url = '{0}/{1}'.format(url, id)
|
|
|
|
|
2018-12-16 02:17:29 -06:00
|
|
|
r = requests.get(url, headers=self.headers)
|
|
|
|
|
|
|
|
if r.raise_for_status():
|
|
|
|
logger.error(r.raise_for_status())
|
|
|
|
raise r.raise_for_status()
|
|
|
|
|
|
|
|
if self.json:
|
|
|
|
return r.json()
|
|
|
|
|
|
|
|
return r.content
|
|
|
|
|
|
|
|
def delete(self, path, id):
|
|
|
|
api_url = self.api_url
|
|
|
|
|
|
|
|
if api_url.endswith('/'):
|
|
|
|
url = '{0}{1}'.format(api_url, path[1:])
|
|
|
|
else:
|
|
|
|
url = '{0}/{1}'.format(api_url, path)
|
|
|
|
|
|
|
|
r = requests.get(url, headers=self.headers)
|
|
|
|
|
|
|
|
if r.raise_for_status():
|
|
|
|
logger.error(r.raise_for_status())
|
|
|
|
raise r.raise_for_status()
|
|
|
|
|
|
|
|
if self.json:
|
|
|
|
return r.json()
|
|
|
|
|
|
|
|
return r.content
|
|
|
|
|
|
|
|
def post(self, path, data):
|
|
|
|
api_url = self.api_url
|
|
|
|
print(api_url)
|
|
|
|
|
|
|
|
if self.api_url.endswith('/'):
|
|
|
|
api_url = api_url[1:]
|
|
|
|
|
|
|
|
if path.startswith('/'):
|
|
|
|
url ='{0}{1}'.format(api_url, path)
|
|
|
|
else:
|
|
|
|
url = '{0}/{1}'.format(api_url, path)
|
|
|
|
|
|
|
|
r = requests.post(url, data, headers=self.headers)
|
|
|
|
|
|
|
|
if r.raise_for_status():
|
|
|
|
logger.error(r.raise_for_status())
|
|
|
|
raise r.raise_for_status()
|
|
|
|
|
|
|
|
if self.json:
|
|
|
|
return r.json()
|
|
|
|
|
|
|
|
return r.content
|
|
|
|
|
|
|
|
def addHeader(self, type, value):
|
|
|
|
self.headers[type] = value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|