Spaces:
Sleeping
Sleeping
| import httpx | |
| from typing import Dict, Any | |
| from .base import BaseAPISource | |
| from .config import API_CONFIGS | |
| class LexiconAPI(BaseAPISource): | |
| """Implémentation de l'API Lexicon pour récupérer les données de parcelles.""" | |
| def __init__(self): | |
| config = API_CONFIGS["lexicon"] | |
| super().__init__( | |
| base_url=config["base_url"], | |
| timeout=config["timeout"] | |
| ) | |
| async def get_parcel_from_lat_lon(self, latitude: float, longitude: float) -> Dict[str, Any]: | |
| """ | |
| Récupère les informations de parcelle depuis l'API Lexicon. | |
| Args: | |
| latitude: Latitude en degrés décimaux | |
| longitude: Longitude en degrés décimaux | |
| Returns: | |
| Dict contenant les données de la parcelle depuis Lexicon | |
| Raises: | |
| httpx.HTTPStatusError: Si la requête échoue | |
| httpx.RequestError: Si une erreur de connexion survient | |
| """ | |
| url = self._build_url("/tools/parcel-identifier.json") | |
| params = { | |
| "latitude": latitude, | |
| "longitude": longitude | |
| } | |
| async with httpx.AsyncClient(timeout=self.timeout) as client: | |
| try: | |
| response = await client.get(url, params=params) | |
| response.raise_for_status() | |
| return response.json() | |
| except httpx.HTTPStatusError as e: | |
| raise Exception(f"Erreur HTTP {e.response.status_code}: {e.response.text}") | |
| except httpx.RequestError as e: | |
| raise Exception(f"Erreur de connexion à l'API Lexicon: {str(e)}") | |
| # Exemple : Vous pouvez ajouter d'autres méthodes spécifiques à Lexicon ici | |
| # async def autre_methode_lexicon(self, param: str) -> Dict[str, Any]: | |
| # """Autre méthode spécifique à l'API Lexicon.""" | |
| # url = self._build_url("/autre-endpoint") | |
| # # ... implémentation |