diff --git a/backend/moonstream/api.py b/backend/moonstream/api.py index 74ee466c..218cc91b 100644 --- a/backend/moonstream/api.py +++ b/backend/moonstream/api.py @@ -16,6 +16,7 @@ from .routes.streams import router as streams_router from .routes.subscriptions import router as subscriptions_router from .routes.txinfo import router as txinfo_router from .routes.users import router as users_router +from .routes.whales import router as whales_router from .middleware import BroodAuthMiddleware, MoonstreamHTTPException from .settings import DOCS_TARGET_PATH, ORIGINS from .version import MOONSTREAM_VERSION @@ -37,6 +38,7 @@ tags_metadata = [ {"name": "tokens", "description": "Operations with user tokens."}, {"name": "txinfo", "description": "Ethereum transactions info."}, {"name": "users", "description": "Operations with users."}, + {"name": "whales", "description": "Whales summaries"}, ] app = FastAPI( @@ -126,3 +128,4 @@ app.include_router(streams_router) app.include_router(subscriptions_router) app.include_router(txinfo_router) app.include_router(users_router) +app.include_router(whales_router) diff --git a/backend/moonstream/routes/whales.py b/backend/moonstream/routes/whales.py index 2c089f4c..56d8a5f8 100644 --- a/backend/moonstream/routes/whales.py +++ b/backend/moonstream/routes/whales.py @@ -3,55 +3,28 @@ Moonstream's /whales endpoints. These endpoints provide public access to whale watch summaries. No authentication required. """ -from datetime import datetime import logging from typing import Optional -from bugout.data import BugoutResource - -from fastapi import Depends, FastAPI, Query +from fastapi import APIRouter, Depends, Query from moonstreamdb import db -from fastapi.middleware.cors import CORSMiddleware from sqlalchemy.orm import Session from .. import data from ..providers.bugout import whalewatch_provider from ..settings import ( bugout_client, - DOCS_TARGET_PATH, MOONSTREAM_ADMIN_ACCESS_TOKEN, MOONSTREAM_DATA_JOURNAL_ID, - ORIGINS, ) from ..stream_queries import StreamQuery -from ..version import MOONSTREAM_VERSION logger = logging.getLogger(__name__) -tags_metadata = [ - {"name": "whales", "description": "Whales summaries"}, -] - -app = FastAPI( - title=f"Moonstream /whales API", - description="User, token and password handlers.", - version=MOONSTREAM_VERSION, - openapi_tags=tags_metadata, - openapi_url="/openapi.json", - docs_url=None, - redoc_url=f"/{DOCS_TARGET_PATH}", -) - -app.add_middleware( - CORSMiddleware, - allow_origins=ORIGINS, - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) +router = APIRouter(prefix="/whales") -@app.get("/", tags=["whales"], response_model=data.GetEventsResponse) +@router.get("/", tags=["whales"], response_model=data.GetEventsResponse) async def stream_handler( start_time: int = Query(0), end_time: Optional[int] = Query(None),