Files
pythonscript/ehapi.py

55 lines
1.8 KiB
Python

from requests import Response, Session
class EHC:
def __init__(self):
self.ses = Session()
self.exit_handles = []
self.base = "http://localhost:8080/api"
def __enter__(self):
return self
def __exit__(self, _typ, _val, _tb):
for e in self.exit_handles:
e()
def get(self, method: str, params=None, data=None):
return self.ses.get(f"{self.base}{method}", params=params, data=data)
def get_gallery(self, gid: int):
return self.handle_api_result(self.get(f"/gallery/{gid}"))
def list_galleries(self, offset: int = 0, limit: int = 20,
all: bool = False, fields: str = '*',
sort_by_gid: bool = None, uploader: str = None,
category: str = None):
params = {}
if not all:
params['offset'] = offset
params['limit'] = limit
else:
params['all'] = '1'
if fields and fields != '*':
params['fields'] = fields
if sort_by_gid is not None:
params['sort_by_gid'] = '1' if sort_by_gid else '0'
if uploader:
params['uploader'] = uploader
if category:
params['category'] = category
return self.handle_api_result(self.get("/gallery/list", params=params))
def handle_api_result(self, re: Response):
re = re.json()
if re['ok']:
return re['data']
else:
raise ValueError((re['status'], re['error']))
def post(self, method: str, data=None, json=None, headers=None):
return self.ses.post(f"{self.base}{method}", data=data, json=json, headers=headers) # noqa: E501
def update_file_meta_json(self, json):
return self.handle_api_result(self.post("/filemeta", json=json))