api: add SETTINGS.show_api_docs

This commit is contained in:
Jörn-Michael Miehe 2026-02-22 12:06:16 +01:00
parent 30d1c5fba9
commit 1eab05a6ea
2 changed files with 12 additions and 9 deletions

View file

@ -21,7 +21,7 @@
"${workspaceFolder}/advent22_api" "${workspaceFolder}/advent22_api"
], ],
"env": { "env": {
"WEBDAV__CACHE_TTL": "30" "ADVENT22__WEBDAV__CACHE_TTL": "30"
}, },
"justMyCode": true "justMyCode": true
} }

View file

@ -1,4 +1,4 @@
from pydantic import BaseModel from pydantic import BaseModel, Field
from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic_settings import BaseSettings, SettingsConfigDict
@ -62,29 +62,32 @@ class Settings(BaseSettings):
##### #####
production_mode: bool = False production_mode: bool = False
show_api_docs: bool = Field(
default_factory=lambda data: not data["production_mode"]
)
ui_directory: str = "/opt/advent22/ui" ui_directory: str = "/opt/advent22/ui"
##### #####
# openapi settings # openapi settings
##### #####
def __dev_value[T](self, value: T) -> T | None: def __api_docs[T](self, value: T) -> T | None:
if self.production_mode: if self.show_api_docs:
return None return value
return value return None
@property @property
def openapi_url(self) -> str | None: def openapi_url(self) -> str | None:
return self.__dev_value("/api/openapi.json") return self.__api_docs("/api/openapi.json")
@property @property
def docs_url(self) -> str | None: def docs_url(self) -> str | None:
return self.__dev_value("/api/docs") return self.__api_docs("/api/docs")
@property @property
def redoc_url(self) -> str | None: def redoc_url(self) -> str | None:
return self.__dev_value("/api/redoc") return self.__api_docs("/api/redoc")
##### #####
# webdav settings # webdav settings