feat(config): make ArcGIS data source URLs configurable
- Add ARCGIS_CABLE_URL, ARCGIS_LANDING_POINT_URL, ARCGIS_CABLE_LANDING_RELATION_URL to config - Use @property to read URL from settings in collectors - URLs can now be configured via environment variables
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
"""ArcGIS Landing Points Collector
|
||||
|
||||
Collects landing point data from ArcGIS GeoJSON API.
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, List
|
||||
from datetime import datetime
|
||||
import httpx
|
||||
|
||||
from app.services.collectors.base import BaseCollector
|
||||
from app.core.config import settings
|
||||
|
||||
|
||||
class ArcGISLandingPointCollector(BaseCollector):
|
||||
@@ -16,21 +13,18 @@ class ArcGISLandingPointCollector(BaseCollector):
|
||||
frequency_hours = 168
|
||||
data_type = "landing_point"
|
||||
|
||||
base_url = "https://services.arcgis.com/6DIQcwlPy8knb6sg/arcgis/rest/services/SubmarineCables/FeatureServer/1/query"
|
||||
@property
|
||||
def base_url(self) -> str:
|
||||
return settings.ARCGIS_LANDING_POINT_URL
|
||||
|
||||
async def fetch(self) -> List[Dict[str, Any]]:
|
||||
params = {"where": "1=1", "outFields": "*", "returnGeometry": "true", "f": "geojson"}
|
||||
|
||||
async with self._get_client() as client:
|
||||
async with httpx.AsyncClient(timeout=60.0) as client:
|
||||
response = await client.get(self.base_url, params=params)
|
||||
response.raise_for_status()
|
||||
return self.parse_response(response.json())
|
||||
|
||||
def _get_client(self):
|
||||
import httpx
|
||||
|
||||
return httpx.AsyncClient(timeout=60.0)
|
||||
|
||||
def parse_response(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
|
||||
result = []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user