import logging from django.http import JsonResponse from rest_framework.decorators import api_view from oauthlib import openid from py_jwt_validator import PyJwtValidator, PyJwtException import requests logger = logging.getLogger(__name__) class TestApiClass: @staticmethod @api_view(['GET']) def test_api(request): logger.debug('Test api call: {}'.format(request)) return JsonResponse({'Result': 'success'}, safe=False) class LoginClass: @staticmethod @api_view(['GET']) def login(request: requests.Request): logger.debug('Validating request: {}'.format(request)) if 'Authorization' not in request.headers: print(f"Authorization header missing") logger.error(f"Authorization header missing") return JsonResponse({}, status=401) bearer = request.headers['Authorization'] if len(bearer.split()) < 2: return JsonResponse({}, status=401) jwt = bearer.split()[1] try: PyJwtValidator(jwt) except PyJwtException as e: print(f"Exception caught. Error: {e}") logger.error(f"Exception caught. Error: {e}") return JsonResponse({}, status=401) except UnicodeDecodeError as e2: print(f"Exception caught. Error: {e2}") logger.error(f"Exception caught. Error: {e2}") return JsonResponse({}, status=401) return JsonResponse({}, safe=False, status=200)