feat: initialize microservice architecture with auth, api, realtime, copernicus, ml, and console modules
This commit is contained in:
46
copernicus/routers/catalog.py
Normal file
46
copernicus/routers/catalog.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from fastapi import APIRouter, Depends, Query, HTTPException
|
||||
from typing import Optional
|
||||
from middleware.auth import require_auth
|
||||
from core import copernicus
|
||||
|
||||
"""
|
||||
api.mebboat.it/marine/...
|
||||
"""
|
||||
|
||||
router = APIRouter(prefix="/catalog", tags=["Copernicus Marine Database"])
|
||||
|
||||
@router.get("")
|
||||
async def list_catalog(
|
||||
search: Optional[str] = Query(None, description="Cerca per nome o ID"),
|
||||
limit: int = Query(50, ge=1, le=200),
|
||||
offset: int = Query(0, ge=0),
|
||||
user=Depends(require_auth)
|
||||
):
|
||||
"""
|
||||
[API] Ottieni una lista di dataset corrispondeti alla query di ricerca, con paginazione.
|
||||
Ogni dataset include ID, titolo, descrizione, variabili, posizione e finestra di tempo.
|
||||
I risultati rimangono salvati nella cache del server per un ora.
|
||||
"""
|
||||
try:
|
||||
return copernicus.get_catalog(search=search, limit=limit, offset=offset)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=502, detail=f"Catalog unavailable: {str(e)}")
|
||||
|
||||
|
||||
@router.get("/{dataset_id}")
|
||||
async def get_dataset(
|
||||
dataset_id: str,
|
||||
user=Depends(require_auth)
|
||||
):
|
||||
"""
|
||||
[API] Ottieni i dati di un dataset dal catalogo di Copernics Marine.
|
||||
"""
|
||||
try:
|
||||
info = copernicus.get_dataset_info(dataset_id)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=502, detail=f"Catalog unavailable: {str(e)}")
|
||||
|
||||
if info is None:
|
||||
raise HTTPException(status_code=404, detail=f"Dataset '{dataset_id}' not found in catalog")
|
||||
|
||||
return info
|
||||
Reference in New Issue
Block a user