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 |