from typing import TypedDict, NamedTuple from ask_candid.base.config.base import _load_value class Api(TypedDict): """REST API configuration template """ url: str | None key: str | None class ApiConfig(NamedTuple): url: str | None key: str | None @property def header(self) -> dict[str, str | None]: return {"x-api-key": self.key} def endpoint(self, route: str): return f"{self.url}/{route}" CDS_API = Api( url=_load_value("CDS_API_URL"), key=_load_value("CDS_API_KEY") ) CANDID_SEARCH_API = Api( url=_load_value("CANDID_SEARCH_API_URL"), key=_load_value("CANDID_SEARCH_API_KEY") ) OPENAI = Api(url=None, key=_load_value("OPENAI_API_KEY")) SEARCH = ApiConfig( url="https://ajr9jccwf0.execute-api.us-east-1.amazonaws.com/Prod", key=_load_value("SEARCH_API_KEY") ) AUTOCODING = ApiConfig( url="https://auto-coding-api.candid.org", key=_load_value("AUTOCODING_API_KEY") ) DOCUMENT = ApiConfig( url="https://dtntz2p635.execute-api.us-east-1.amazonaws.com/Prod", key=_load_value("GEOCODING_API_KEY") ) FUNDER_RECOMMENDATION = ApiConfig( url="https://r6g59fxbie.execute-api.us-east-1.amazonaws.com/Prod", key=_load_value("FUNDER_RECS_API_KEY") ) LOI_WRITER = ApiConfig( url="https://tc2ir1o7ne.execute-api.us-east-1.amazonaws.com/Prod", key=_load_value("LOI_WRITER_API_KEY") ) GOLDEN_ORG = ApiConfig( url="https://qfdur742ih.execute-api.us-east-1.amazonaws.com/Prod", key=_load_value("GOLDEN_RECORD_API_KEY") )