mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
34 lines
1 KiB
Python
34 lines
1 KiB
Python
from typing import Any, Literal
|
|
|
|
import requests
|
|
|
|
|
|
class BuildingInsightsNotFoundError(Exception):
|
|
pass
|
|
|
|
|
|
class GoogleSolarApiClient:
|
|
base_url: str = "https://solar.googleapis.com/v1"
|
|
MAX_RETRIES: int = 5
|
|
ENTITY_NOT_FOUND_ERROR: str = "Requested entity was not found."
|
|
|
|
def __init__(self, api_key: str) -> None:
|
|
self._api_key = api_key
|
|
|
|
def get_building_insights(
|
|
self,
|
|
longitude: float,
|
|
latitude: float,
|
|
required_quality: Literal["HIGH", "MEDIUM", "LOW"] = "MEDIUM",
|
|
) -> dict[str, Any]:
|
|
insights_url = f"{self.base_url}/buildingInsights:findClosest"
|
|
params: dict[str, str] = {
|
|
"location.latitude": f"{latitude:.5f}",
|
|
"location.longitude": f"{longitude:.5f}",
|
|
"requiredQuality": required_quality,
|
|
"key": self._api_key,
|
|
}
|
|
response = requests.get(insights_url, params=params)
|
|
response.raise_for_status()
|
|
result: dict[str, Any] = response.json()
|
|
return result
|