31 lines
No EOL
1.4 KiB
Python
31 lines
No EOL
1.4 KiB
Python
from flask import request, jsonify
|
|
from .require_decorators import get_cropped_token
|
|
from .data.data_models import ResponseCode
|
|
from .data import dao_session
|
|
from urllib.parse import parse_qs
|
|
|
|
def handle_has_media_access():
|
|
media_token = get_cropped_token(_get_token_from_request('Media-Authorization'))
|
|
if (media_token is None):
|
|
errorResponse = jsonify({'message':'Missing Authorization!','code':ResponseCode.MISSING_MEDIA_AUTHORIZATION})
|
|
return errorResponse, 401
|
|
user_id = dao_session.get_user_for_media_token(media_token=media_token)
|
|
if (user_id is None):
|
|
errorResponse = jsonify({'message':'Invalid Authorization!','code':ResponseCode.INVALID_MEDIA_AUTHORIZATION})
|
|
return errorResponse, 401
|
|
return jsonify({'message':'Access Granted','code': ResponseCode.SUCCESS_MEDIA_ACCESS}), 200
|
|
|
|
def _get_token_from_request(key: str):
|
|
token = request.headers.get(key)
|
|
if (token is not None):
|
|
return token
|
|
original_uri = request.headers.get('X-Original-URI')
|
|
if not isinstance(original_uri,str):
|
|
return None
|
|
query_string = original_uri[original_uri.find('?')+1:]
|
|
return _get_first_token_from_query_string(query_string = query_string, key = key)
|
|
|
|
def _get_first_token_from_query_string(query_string: str, key: str):
|
|
query_dict = parse_qs(query_string)
|
|
tokens = query_dict.get(key, [None])
|
|
return tokens[0] |