diff --git a/stac_fastapi/api/stac_fastapi/api/config.py b/stac_fastapi/api/stac_fastapi/api/config.py index 96114b1f4..988f246ba 100644 --- a/stac_fastapi/api/stac_fastapi/api/config.py +++ b/stac_fastapi/api/stac_fastapi/api/config.py @@ -30,7 +30,7 @@ class AddOns(enum.Enum): bulk_transaction = "bulk-transaction" -class Settings(BaseSettings): +class FastApiAppSettings(BaseSettings): """API settings.""" allow_origins: Sequence[str] = Field(("*",), env="cors_allow_origins") @@ -42,4 +42,4 @@ class Settings(BaseSettings): max_age: int = Field(600, env="cors_max_age") -settings: Final = Settings() +fastapi_app_settings: Final = FastApiAppSettings() diff --git a/stac_fastapi/api/stac_fastapi/api/middleware.py b/stac_fastapi/api/stac_fastapi/api/middleware.py index 8dd8be2a8..4858aeb35 100644 --- a/stac_fastapi/api/stac_fastapi/api/middleware.py +++ b/stac_fastapi/api/stac_fastapi/api/middleware.py @@ -10,7 +10,7 @@ from starlette.routing import Match from starlette.types import ASGIApp -from stac_fastapi.api.config import settings +from stac_fastapi.api.config import fastapi_app_settings logger: Final = getLogger(__file__) @@ -54,21 +54,27 @@ def __init__( ) -> None: """Create CORSMiddleware Object.""" allow_origins = ( - settings.allow_origins if allow_origins is None else allow_origins + fastapi_app_settings.allow_origins + if allow_origins is None + else allow_origins ) allow_methods = ( - settings.allow_methods if allow_methods is None else allow_methods + fastapi_app_settings.allow_methods + if allow_methods is None + else allow_methods ) allow_headers = ( - settings.allow_headers if allow_headers is None else allow_headers + fastapi_app_settings.allow_headers + if allow_headers is None + else allow_headers ) allow_credentials = ( - settings.allow_credentials + fastapi_app_settings.allow_credentials if allow_credentials is None else allow_credentials ) allow_origin_regex = ( - settings.allow_origin_regex + fastapi_app_settings.allow_origin_regex if allow_origin_regex is None else allow_origin_regex ) @@ -76,9 +82,11 @@ def __init__( logger.info("allow_origin_regex present and will override allow_origins") allow_origins = "" expose_headers = ( - settings.expose_headers if expose_headers is None else expose_headers + fastapi_app_settings.expose_headers + if expose_headers is None + else expose_headers ) - max_age = settings.max_age if max_age is None else max_age + max_age = fastapi_app_settings.max_age if max_age is None else max_age logger.debug( f""" CORS configuration diff --git a/stac_fastapi/api/tests/cors_support.py b/stac_fastapi/api/tests/cors_support.py index 9f9c303e6..15f1b7375 100644 --- a/stac_fastapi/api/tests/cors_support.py +++ b/stac_fastapi/api/tests/cors_support.py @@ -2,9 +2,9 @@ from json import dumps from typing import Final -from stac_fastapi.api.config import settings +from stac_fastapi.api.config import fastapi_app_settings -settings_fallback = deepcopy(settings) +settings_fallback = deepcopy(fastapi_app_settings) cors_origin_1: Final = "http://permit.one" cors_origin_2: Final = "http://permit.two" cors_origin_3: Final = "http://permit.three" @@ -12,31 +12,31 @@ def cors_permit_1(): - settings.allow_origins = dumps((cors_origin_1,)) + fastapi_app_settings.allow_origins = dumps((cors_origin_1,)) def cors_permit_2(): - settings.allow_origins = dumps((cors_origin_2,)) + fastapi_app_settings.allow_origins = dumps((cors_origin_2,)) def cors_permit_3(): - settings.allow_origins = dumps((cors_origin_3,)) + fastapi_app_settings.allow_origins = dumps((cors_origin_3,)) def cors_permit_12(): - settings.allow_origins = dumps((cors_origin_1, cors_origin_2)) + fastapi_app_settings.allow_origins = dumps((cors_origin_1, cors_origin_2)) def cors_permit_123_regex(): - settings.allow_origin_regex = "http\\://permit\\..+" + fastapi_app_settings.allow_origin_regex = "http\\://permit\\..+" def cors_deny(): - settings.allow_origins = dumps((cors_origin_deny,)) + fastapi_app_settings.allow_origins = dumps((cors_origin_deny,)) def cors_disable_get(): - settings.allow_methods = dumps( + fastapi_app_settings.allow_methods = dumps( ( "HEAD", "POST", @@ -51,10 +51,10 @@ def cors_disable_get(): def cors_clear_config(): - settings.allow_origins = settings_fallback.allow_origins - settings.allow_methods = settings_fallback.allow_methods - settings.allow_headers = settings_fallback.allow_headers - settings.allow_credentials = settings_fallback.allow_credentials - settings.allow_origin_regex = settings_fallback.allow_origin_regex - settings.expose_headers = settings_fallback.expose_headers - settings.max_age = settings_fallback.max_age + fastapi_app_settings.allow_origins = settings_fallback.allow_origins + fastapi_app_settings.allow_methods = settings_fallback.allow_methods + fastapi_app_settings.allow_headers = settings_fallback.allow_headers + fastapi_app_settings.allow_credentials = settings_fallback.allow_credentials + fastapi_app_settings.allow_origin_regex = settings_fallback.allow_origin_regex + fastapi_app_settings.expose_headers = settings_fallback.expose_headers + fastapi_app_settings.max_age = settings_fallback.max_age