Skip to content

Rename settings object #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions stac_fastapi/api/stac_fastapi/api/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -42,4 +42,4 @@ class Settings(BaseSettings):
max_age: int = Field(600, env="cors_max_age")


settings: Final = Settings()
fastapi_app_settings: Final = FastApiAppSettings()
24 changes: 16 additions & 8 deletions stac_fastapi/api/stac_fastapi/api/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down Expand Up @@ -54,31 +54,39 @@ 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
)
if allow_origin_regex is not None:
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
Expand Down
32 changes: 16 additions & 16 deletions stac_fastapi/api/tests/cors_support.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,41 @@
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"
cors_origin_deny: Final = "http://deny.me"


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",
Expand All @@ -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