diff --git a/portal_server.py b/portal_server.py index 669d7b9..d144851 100755 --- a/portal_server.py +++ b/portal_server.py @@ -743,19 +743,29 @@ def pod_static(filename=""): @app.route("/turf/api/") @app.route("/turf/api/") def api_proxy(api_path=""): - if api_path.startswith("vitesse"): - url = f"{COMBINED_API_URL}/turf/api/{api_path}" - elif api_path.startswith("n8n-proxy"): - url = f"{COMBINED_API_URL}/turf/api/{api_path}" - elif api_path.startswith("backtest"): - url = f"{COMBINED_API_URL}/turf/api/{api_path}" - elif api_path.startswith("stats"): - url = f"{COMBINED_API_URL}/turf/api/{api_path}" - elif api_path.startswith("predictions_analysis"): - url = f"{COMBINED_API_URL}/turf/api/{api_path}" - elif api_path.startswith("parisroi"): - url = f"{COMBINED_API_URL}/turf/api/{api_path}" - elif api_path.startswith("paris"): + # Routes servies par combined_api.py (port 8790) : + # backtest, stats, paris, parisroi, races, scores, report, ask, brave-search, + # execute-sql, send-email, vitesse, n8n-proxy, predictions_analysis, ideas + # Fix HRT-73 : alignement complet avec turf_scraper fix #23 + COMBINED_ROUTES = ( + "backtest", + "stats", + "parisroi", + "paris", + "predictions_analysis", + "vitesse", + "n8n-proxy", + "races", + "race/", + "scores", + "ask", + "brave-search", + "execute-sql", + "send-email", + "report", + "ideas", + ) + if any(api_path.startswith(r) for r in COMBINED_ROUTES): url = f"{COMBINED_API_URL}/turf/api/{api_path}" elif api_path.startswith("scoring"): url = f"{DASHBOARD_API_URL}/turf/api/{api_path}" @@ -770,11 +780,17 @@ def api_proxy(api_path=""): if fwd_method in ("POST", "PUT", "PATCH") else None ) + # Forwarder Authorization header (combined_api.py exige Basic h3r7:h3r7 pour parisroi/paris) fwd_headers = {"Content-Type": "application/json"} - if request.headers.get("Authorization"): - fwd_headers["Authorization"] = request.headers.get("Authorization") + incoming_auth = request.headers.get("Authorization") + if incoming_auth: + fwd_headers["Authorization"] = incoming_auth resp = requests.request( - method=fwd_method, url=url, json=fwd_json, timeout=30, headers=fwd_headers + method=fwd_method, + url=url, + json=fwd_json, + timeout=30, + headers=fwd_headers, ) return resp.content, resp.status_code, {"Content-Type": "application/json"} except Exception as e: