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