import os
import secrets

os.chdir(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('OMP_NUM_THREADS', '1')
os.environ.setdefault('OPENBLAS_NUM_THREADS', '1')

from flask import request, jsonify
from libretranslate.main import get_parser
from libretranslate.app import create_app

args = get_parser().parse_args([
    '--load-only', 'en,es',
    '--threads', '1',
    '--char-limit', '3000',
    '--req-limit', '60',
    '--disable-files-translation',
    '--disable-web-ui',
])
application = create_app(args)

@application.before_request
def academy_only():
    if request.path in ('/languages', '/health') and request.method == 'GET':
        return None
    if request.path != '/translate' or request.method != 'POST':
        return jsonify(error='Endpoint unavailable'), 404
    key = os.environ.get('LT_SITE_KEY', '')
    if len(key) < 32:
        return jsonify(error='Translation key is not configured'), 503
    data = request.get_json(silent=True) or {}
    supplied = data.get('api_key', '') if isinstance(data, dict) else ''
    if not isinstance(supplied, str) or not secrets.compare_digest(supplied, key):
        return jsonify(error='Invalid API key'), 403
