|
|
|
|
|
from flask import request, jsonify
|
|
from functools import wraps
|
|
import os
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
def getenv_bool(name: str, default: bool = False) -> bool:
|
|
return os.getenv(name, str(default)).lower() in ("yes", "y", "true", "1", "t")
|
|
|
|
API_KEY = os.getenv('API_KEY', 'your_api_key_here')
|
|
REQUIRE_API_KEY = getenv_bool('REQUIRE_API_KEY', True)
|
|
|
|
def require_api_key(f):
|
|
@wraps(f)
|
|
def decorated_function(*args, **kwargs):
|
|
if not REQUIRE_API_KEY:
|
|
return f(*args, **kwargs)
|
|
auth_header = request.headers.get('Authorization')
|
|
if not auth_header or not auth_header.startswith('Bearer '):
|
|
return jsonify({"error": "Missing or invalid API key"}), 401
|
|
token = auth_header.split('Bearer ')[1]
|
|
if token != API_KEY:
|
|
return jsonify({"error": "Invalid API key"}), 401
|
|
return f(*args, **kwargs)
|
|
return decorated_function
|
|
|
|
|
|
AUDIO_FORMAT_MIME_TYPES = {
|
|
"mp3": "audio/mpeg",
|
|
"opus": "audio/ogg",
|
|
"aac": "audio/aac",
|
|
"flac": "audio/flac",
|
|
"wav": "audio/wav",
|
|
"pcm": "audio/L16"
|
|
}
|
|
|