Spaces:
Configuration error
Configuration error
| """ | |
| api_client/http.py — Raw HTTP helpers (GET / POST / DELETE) | |
| All API calls in this project go through these three functions so | |
| connection errors and HTTP errors are handled in one place. | |
| """ | |
| import os | |
| import requests | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| API_BASE = os.getenv("API_BASE_URL", "http://localhost:8000") | |
| _START_HINT = "FastAPI not running. Start it with: python src/server/app.py" | |
| def api_get(path: str, params: dict | None = None) -> dict: | |
| try: | |
| r = requests.get(f"{API_BASE}{path}", params=params, timeout=10) | |
| r.raise_for_status() | |
| return r.json() | |
| except requests.exceptions.ConnectionError: | |
| return {"error": _START_HINT} | |
| except Exception as e: | |
| return {"error": str(e)} | |
| def api_post(path: str, data: dict | None = None) -> dict: | |
| try: | |
| r = requests.post(f"{API_BASE}{path}", json=data, timeout=30) | |
| r.raise_for_status() | |
| return r.json() | |
| except requests.exceptions.ConnectionError: | |
| return {"error": _START_HINT} | |
| except Exception as e: | |
| return {"error": str(e)} | |
| def api_delete(path: str) -> dict: | |
| try: | |
| r = requests.delete(f"{API_BASE}{path}", timeout=10) | |
| r.raise_for_status() | |
| return r.json() | |
| except requests.exceptions.ConnectionError: | |
| return {"error": _START_HINT} | |
| except Exception as e: | |
| return {"error": str(e)} |