import pathlib from typing import Any from fansifter_common.constants import PROD_ENVIRONMENT, QA_ENVIRONMENT from starlette.config import Config env = Config(".env") # Project directories BASE_DIR = pathlib.Path(__file__).resolve().parent ROOT_DIR = BASE_DIR.parent # Main DEBUG: bool = env.get("APP_DEBUG", default=False, cast=bool) ENVIRONMENT: str = env.get("Environment", default="dev") RUN_FROM_CLI = env.get("APP_RUN_FROM_CLI", default=False, cast=bool) # Service SERVICE_NAME = "ows-location" SERVICE_VERSION = "1.0.0" # JWT JWT_AUTH_ENABLED = ENVIRONMENT in [PROD_ENVIRONMENT] JWT_AUTH_EXCLUDE_PATHS = [ "/hello/", "/redoc", "/docs*", "/openapi.json", ] # QA QA_SERVER_URL = "https://qa-ows-location.theorchard.io" # OpenAPI / Swagger OPENAPI_URL: str | None = "/openapi.json" OPENAPI_FILEPATH: pathlib.Path = ROOT_DIR / "spec/ows_location-1.0.0.yaml" OPENAPI_SERVERS: list[dict[str, Any]] | None = None if ENVIRONMENT != "dev": OPENAPI_URL = None if ENVIRONMENT == "dev" and RUN_FROM_CLI: OPENAPI_SERVERS = [{"url": QA_SERVER_URL}] if ENVIRONMENT != "dev": OPENAPI_ENABLED = False # Logging LOGGER_NAME = "ows1" LOG_FORMAT = env.get("LOG_FORMAT", default="json") LOGGING_CONFIG: dict[str, Any] = { "version": 1, "disable_existing_loggers": False, "handlers": { "stream": { "level": "INFO", "class": "fansifter_common.logging.OwsStreamHandler", }, "null": { "level": "INFO", "class": "logging.NullHandler", }, }, "loggers": { "location": { "handlers": ["stream"], "level": "INFO", }, "fansifter_common.logging.asgi.middleware": { "handlers": ["stream"], "level": "INFO", }, "uvicorn": { "handlers": ["stream"], "level": "INFO", }, "uvicorn.access": { "handlers": ["null"], "level": "INFO", }, }, } # Sentry SENTRY_DSN: str | None = env.get("SENTRY_DSN", default=None) # IP2Location binary DEFAULT_BINARY_FILENAME = ( "prod.bin" if ENVIRONMENT == PROD_ENVIRONMENT else "sample.bin" ) DEFAULT_BINARY_PATH = ROOT_DIR / "data" / DEFAULT_BINARY_FILENAME if ENVIRONMENT in [QA_ENVIRONMENT, PROD_ENVIRONMENT]: DEFAULT_BINARY_PATH = pathlib.Path("/var/data").resolve() / DEFAULT_BINARY_FILENAME BINARY_PATH: pathlib.Path = env.get( "BINARY_PATH", default=DEFAULT_BINARY_PATH, cast=pathlib.Path, )