From deeae2a7cb64e3b347f46880b55c85bbfc3cd7f3 Mon Sep 17 00:00:00 2001 From: Jeremy McCormick Date: Wed, 29 May 2024 12:33:02 -0500 Subject: [PATCH 1/2] Add search function which redirects to MPC Redirect to the page for an object on the MPC website based on its designation provided to the search function. An erroneous string which was prepended to designations in the DP0.3 data is first stripped off so that the information is valid. --- src/mpclookup/handlers/external.py | 31 +++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/mpclookup/handlers/external.py b/src/mpclookup/handlers/external.py index cd33a42..28eaab8 100644 --- a/src/mpclookup/handlers/external.py +++ b/src/mpclookup/handlers/external.py @@ -2,7 +2,8 @@ from typing import Annotated -from fastapi import APIRouter, Depends +from fastapi import APIRouter, Depends, Query +from fastapi.responses import RedirectResponse from safir.dependencies.logger import logger_dependency from safir.metadata import get_metadata from structlog.stdlib import BoundLogger @@ -50,3 +51,31 @@ async def get_index( application_name=config.name, ) return Index(metadata=metadata) + + +_DESIGNATION_PREPEND = "2011 " + + +@external_router.get("/search", response_class=RedirectResponse) +async def search( + designation: Annotated[str, Query()], + logger: Annotated[BoundLogger, Depends(logger_dependency)], +) -> str: + """ + Request a redirect to the MPCORB record for a given designation. + + Notes + ----- + Example request: + + /mpc-lookup/search?designation=2011+1001+T-2 + + """ + logger.info("Request for designation URL", designation=designation) + fd = designation.replace(_DESIGNATION_PREPEND, "") + redirect_url = ( + "https://www.minorplanetcenter.net/db_search/" + f"show_object?object_id={fd}" + ) + logger.info("Redirecting to designation URL", redirect_url=redirect_url) + return redirect_url From a069038e225e19db07b03b06c4d3c06ee7ac97b7 Mon Sep 17 00:00:00 2001 From: Jeremy McCormick Date: Wed, 29 May 2024 12:35:35 -0500 Subject: [PATCH 2/2] reformat --- src/mpclookup/config.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/mpclookup/config.py b/src/mpclookup/config.py index 3e53804..ba7922e 100644 --- a/src/mpclookup/config.py +++ b/src/mpclookup/config.py @@ -14,9 +14,7 @@ class Config(BaseSettings): name: str = Field("mpc-lookup", title="Name of application") - path_prefix: str = Field( - "/mpc-lookup", title="URL prefix for application" - ) + path_prefix: str = Field("/mpc-lookup", title="URL prefix for application") profile: Profile = Field( Profile.development, title="Application logging profile"