from django.http import JsonResponse from lemoncurry.middleware import ResponseException from typing import Optional def forbidden() -> ResponseException: return res("forbidden", 403) def unauthorized() -> ResponseException: return res("unauthorized", 401) def bad_req(msg: str) -> ResponseException: return res("invalid_request", msg=msg) def bad_type(type: str) -> ResponseException: msg = "unsupported request type {0}".format(type) return res("invalid_request", 415, msg) def bad_scope(scope: str) -> ResponseException: return res("insufficient_scope", 401, scope=scope) def res( error: str, status: Optional[int] = 400, msg: Optional[str] = None, scope: Optional[str] = None, ): content = {"error": error} if msg is not None: content["error_description"] = msg if scope: content["scope"] = scope return ResponseException(JsonResponse(content, status=status))