Spaces:
Sleeping
Sleeping
| """ | |
| API client for communicating with the DGaze backend. | |
| Similar to the client.ts in the React frontend. | |
| """ | |
| import requests | |
| from typing import Dict, Any, Optional | |
| from config.settings import settings | |
| class DGazeAPIClient: | |
| """Client for interacting with the DGaze verification API.""" | |
| def __init__(self): | |
| self.base_url = settings.API_BASE_URL | |
| self.verify_endpoint = settings.API_ENDPOINT | |
| self.health_endpoint = settings.HEALTH_ENDPOINT | |
| def verify_news(self, input_text: str, access_token: Optional[str] = None) -> Dict[str, Any]: | |
| """ | |
| Send news text to backend for verification. | |
| Args: | |
| input_text: The news text or URL to verify | |
| access_token: Optional JWT token for authenticated requests | |
| Returns: | |
| Dict containing the verification results | |
| Raises: | |
| requests.exceptions.RequestException: For API errors | |
| """ | |
| if not input_text.strip(): | |
| raise ValueError("Input text cannot be empty") | |
| # Prepare the request payload | |
| payload = { | |
| "input": input_text, | |
| "input_type": "text" | |
| } | |
| # Prepare headers | |
| headers = {"Content-Type": "application/json"} | |
| if access_token: | |
| headers["Authorization"] = f"Bearer {access_token}" | |
| # Make API request to backend | |
| response = requests.post( | |
| self.verify_endpoint, | |
| json=payload, | |
| timeout=60, | |
| headers=headers | |
| ) | |
| if response.status_code == 401: | |
| raise ValueError("Authentication required. Please log in to continue.") | |
| elif response.status_code == 403: | |
| raise ValueError("Access denied. You don't have permission to perform this action.") | |
| elif response.status_code != 200: | |
| raise requests.exceptions.HTTPError( | |
| f"API Error: Server returned status {response.status_code}" | |
| ) | |
| data = response.json() | |
| if data.get("status") != "success": | |
| raise ValueError(f"Verification Failed: {data.get('message', 'Unknown error')}") | |
| return data | |
| def check_health(self) -> bool: | |
| """ | |
| Check if the backend service is healthy. | |
| Returns: | |
| True if backend is accessible, False otherwise | |
| """ | |
| try: | |
| response = requests.get(self.health_endpoint, timeout=5) | |
| return response.status_code == 200 | |
| except requests.exceptions.RequestException: | |
| return False | |
| # Create a default client instance | |
| api_client = DGazeAPIClient() |