35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
"""Public configuration endpoint — returns dynamic upload limits."""
|
|
from flask import Blueprint, jsonify
|
|
|
|
from app.services.policy_service import (
|
|
get_effective_file_size_limits_mb,
|
|
get_usage_summary_for_user,
|
|
resolve_web_actor,
|
|
FREE_PLAN,
|
|
)
|
|
from app.services.credit_config import get_dynamic_tools_info
|
|
|
|
config_bp = Blueprint("config", __name__)
|
|
|
|
|
|
@config_bp.route("", methods=["GET"])
|
|
def get_config():
|
|
"""Return dynamic upload limits and (if logged-in) usage summary.
|
|
|
|
Anonymous callers get free-plan limits.
|
|
Authenticated callers get plan-aware limits + quota usage.
|
|
"""
|
|
actor = resolve_web_actor()
|
|
file_limits_mb = get_effective_file_size_limits_mb(actor.plan)
|
|
|
|
payload: dict = {
|
|
"file_limits_mb": file_limits_mb,
|
|
"max_upload_mb": max(file_limits_mb.values()),
|
|
"dynamic_tools": get_dynamic_tools_info(),
|
|
}
|
|
|
|
if actor.user_id is not None:
|
|
payload["usage"] = get_usage_summary_for_user(actor.user_id, actor.plan)
|
|
|
|
return jsonify(payload), 200
|