25 lines
879 B
Python
25 lines
879 B
Python
from __future__ import annotations
|
|
|
|
from flask import Response, jsonify, request
|
|
|
|
|
|
def build_cors_headers() -> dict:
|
|
origin = request.headers.get("Origin", "*")
|
|
req_headers = request.headers.get("Access-Control-Request-Headers")
|
|
allow_headers = req_headers if req_headers else "Authorization, Content-Type, Accept"
|
|
return {
|
|
"Access-Control-Allow-Origin": origin,
|
|
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
|
|
"Access-Control-Allow-Headers": allow_headers,
|
|
"Access-Control-Max-Age": "86400",
|
|
}
|
|
|
|
|
|
def json_error(message: str, status: int = 400) -> Response:
|
|
resp = jsonify({"error": {"message": message}})
|
|
response: Response = Response(response=resp.response, status=status, mimetype="application/json")
|
|
for k, v in build_cors_headers().items():
|
|
response.headers.setdefault(k, v)
|
|
return response
|
|
|