backend/src/resources/itemapi.py

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")