43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""
|
|
Endpoinds manipulating items
|
|
"""
|
|
|
|
__author__ = '@tormakris'
|
|
__copyright__ = "Copyright 2020, onSpot Team"
|
|
__module_name__ = "itemapi"
|
|
__version__text__ = "1"
|
|
|
|
from flask import request, current_app, abort
|
|
|
|
from flaskaddons.fred import flaskred
|
|
from resources.apiinteractionresource import APIInteractionResource
|
|
|
|
|
|
class ItemApi(APIInteractionResource):
|
|
"""
|
|
See: https://swagger.kmlabz.com/?urls.primaryName=onSpot%20Backend#/backend/getItem
|
|
"""
|
|
|
|
def get(self, itemid: str):
|
|
try:
|
|
flaskred.get(request.headers.get('Authorization')).decode('UTF-8')
|
|
except Exception as e:
|
|
current_app.logger.info(e)
|
|
abort(401, "unauthorized")
|
|
try:
|
|
item_type = flaskred.get(itemid).decode('UTF-8')
|
|
except Exception as e:
|
|
current_app.logger.warning(e)
|
|
abort(404, "unknown item")
|
|
|
|
if item_type == 'release':
|
|
return self.getreleaseinfo(itemid), 200
|
|
elif item_type == 'artist':
|
|
return self.getartistinfo(itemid), 200
|
|
elif item_type == 'work':
|
|
return self.getworkinfo(itemid), 200
|
|
elif item_type == 'recording':
|
|
return self.getrecordinginfo(itemid), 200
|
|
else:
|
|
abort(417, "wrong type of item")
|