advent22/api/advent22_api/settings.py

63 lines
1.2 KiB
Python
Raw Normal View History

2022-10-10 23:46:04 +00:00
from pydantic import BaseModel, BaseSettings
class DavSettings(BaseModel):
"""
Connection to a DAV server.
"""
protocol: str = "https"
host: str = "example.com"
username: str = "advent22_user"
password: str = "password"
path: str = "/remote.php/webdav"
prefix: str = "/advent22"
disable_check: bool = False
retries: int = 20
@property
def url(self) -> str:
"""
Combined DAV URL.
"""
return f"{self.protocol}://{self.host}{self.path}{self.prefix}"
2022-10-08 23:36:16 +00:00
class Settings(BaseSettings):
"""
Per-run settings.
"""
#####
# general settings
#####
production_mode: bool = False
#####
# openapi settings
#####
openapi_url: str = "/openapi.json"
docs_url: str | None = None if production_mode else "/docs"
redoc_url: str | None = None if production_mode else "/redoc"
2022-10-10 23:46:04 +00:00
#####
# webdav settings
#####
webdav: DavSettings = DavSettings()
2022-10-27 23:32:45 +00:00
cache_ttl: int = 30
solution_filename: str = "loesungswort.txt"
2022-10-10 23:46:04 +00:00
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
env_nested_delimiter = "__"
2022-10-08 23:36:16 +00:00
SETTINGS = Settings()