From d4503891abf776a2aa59a0c8764fdbb2c87d7562 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 8 Sep 2020 14:12:49 -0600 Subject: [PATCH 1/4] add readonly, public metadata service --- geomagio/api/ws/app.py | 3 ++- geomagio/api/ws/metadata.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 geomagio/api/ws/metadata.py diff --git a/geomagio/api/ws/app.py b/geomagio/api/ws/app.py index 6f2c49e55..911d3150d 100644 --- a/geomagio/api/ws/app.py +++ b/geomagio/api/ws/app.py @@ -7,7 +7,7 @@ from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse, PlainTextResponse, RedirectResponse from obspy import UTCDateTime -from . import algorithms, data, elements, observatories +from . import algorithms, data, elements, metadata, observatories ERROR_CODE_MESSAGES = { @@ -28,6 +28,7 @@ app = FastAPI(docs_url="/docs", root_path="/ws") app.include_router(algorithms.router) app.include_router(data.router) app.include_router(elements.router) +app.include_router(metadata.router) app.include_router(observatories.router) diff --git a/geomagio/api/ws/metadata.py b/geomagio/api/ws/metadata.py new file mode 100644 index 000000000..7c95aaa36 --- /dev/null +++ b/geomagio/api/ws/metadata.py @@ -0,0 +1,37 @@ +from typing import List + +from fastapi import APIRouter, Body, Response +from obspy import UTCDateTime + +from ...metadata import Metadata, MetadataCategory +from ..secure.MetadataQuery import MetadataQuery +from ..db import metadata_table + +router = APIRouter() + + +@router.get("/metadata", response_model=List[Metadata]) +async def get_metadata( + category: MetadataCategory = None, + starttime: UTCDateTime = None, + endtime: UTCDateTime = None, + network: str = None, + station: str = None, + channel: str = None, + location: str = None, + data_valid: bool = None, + metadata_valid: bool = True, +): + query = MetadataQuery( + category=category, + starttime=starttime, + endtime=endtime, + network=network, + station=station, + channel=channel, + location=location, + data_valid=data_valid, + metadata_valid=metadata_valid, + ) + metas = await metadata_table.get_metadata(**query.datetime_dict(exclude={"id"})) + return metas -- GitLab From 07965f6cec77fdc84444961e8a47c2b38d3cf4e2 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 8 Sep 2020 17:33:17 -0600 Subject: [PATCH 2/4] add METADATA_ENDPOINT env for public metadata endpoint --- geomagio/api/ws/app.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/geomagio/api/ws/app.py b/geomagio/api/ws/app.py index 911d3150d..58fa6d409 100644 --- a/geomagio/api/ws/app.py +++ b/geomagio/api/ws/app.py @@ -20,6 +20,7 @@ ERROR_CODE_MESSAGES = { 503: "Service Unavailable", } +metadata_endpoint = os.getenv("METADATA_ENDPOINT", False) VERSION = os.getenv("GEOMAG_VERSION", "version") @@ -28,9 +29,11 @@ app = FastAPI(docs_url="/docs", root_path="/ws") app.include_router(algorithms.router) app.include_router(data.router) app.include_router(elements.router) -app.include_router(metadata.router) app.include_router(observatories.router) +if metadata_endpoint == True: + app.include_router(metadata.router) + @app.middleware("http") async def add_headers(request: Request, call_next): -- GitLab From 95bd17d3b19d0aea96e96c5576985735249043d4 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 8 Sep 2020 17:40:37 -0600 Subject: [PATCH 3/4] upper case metadata endpoint variable --- geomagio/api/ws/app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geomagio/api/ws/app.py b/geomagio/api/ws/app.py index 58fa6d409..63b838480 100644 --- a/geomagio/api/ws/app.py +++ b/geomagio/api/ws/app.py @@ -20,7 +20,7 @@ ERROR_CODE_MESSAGES = { 503: "Service Unavailable", } -metadata_endpoint = os.getenv("METADATA_ENDPOINT", False) +METADATA_ENDPOINT = os.getenv("METADATA_ENDPOINT", False) VERSION = os.getenv("GEOMAG_VERSION", "version") @@ -31,7 +31,7 @@ app.include_router(data.router) app.include_router(elements.router) app.include_router(observatories.router) -if metadata_endpoint == True: +if METADATA_ENDPOINT == True: app.include_router(metadata.router) -- GitLab From eb899b5684190864ebe5084cd5e2cf5a59f71ec6 Mon Sep 17 00:00:00 2001 From: Jeremy M Fee <jmfee@usgs.gov> Date: Tue, 8 Sep 2020 23:52:43 +0000 Subject: [PATCH 4/4] Treat METADATA_ENDPOINT as boolean --- geomagio/api/ws/app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geomagio/api/ws/app.py b/geomagio/api/ws/app.py index 63b838480..e599c6642 100644 --- a/geomagio/api/ws/app.py +++ b/geomagio/api/ws/app.py @@ -20,7 +20,7 @@ ERROR_CODE_MESSAGES = { 503: "Service Unavailable", } -METADATA_ENDPOINT = os.getenv("METADATA_ENDPOINT", False) +METADATA_ENDPOINT = bool(os.getenv("METADATA_ENDPOINT", False)) VERSION = os.getenv("GEOMAG_VERSION", "version") @@ -31,7 +31,7 @@ app.include_router(data.router) app.include_router(elements.router) app.include_router(observatories.router) -if METADATA_ENDPOINT == True: +if METADATA_ENDPOINT: app.include_router(metadata.router) -- GitLab