47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
"""
|
|
Endpoinds manipulating items
|
|
"""
|
|
|
|
__author__ = '@tormakris'
|
|
__copyright__ = "Copyright 2020, onSpot Team"
|
|
__module_name__ = "itemapi"
|
|
__version__text__ = "1"
|
|
|
|
from datetime import timedelta
|
|
|
|
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")
|
|
flaskred.expire(request.headers.get('Authorization'), timedelta(minutes=15))
|
|
|
|
try:
|
|
itemtype = flaskred.get(itemid).decode('UTF-8')
|
|
except Exception as e:
|
|
current_app.logger.warning(e)
|
|
abort(404, "unknown item")
|
|
|
|
if itemtype == 'release':
|
|
return self.getreleaseinfo(itemid), 200
|
|
elif itemtype == 'artist':
|
|
return self.getartistinfo(itemid), 200
|
|
elif itemtype == 'work':
|
|
return self.getworkinfo(itemid), 200
|
|
elif itemtype == 'recording':
|
|
return self.getrecordinginfo(itemid), 200
|
|
else:
|
|
abort(417, "wrong type of item")
|