import json import os def env(name, default=None): value = os.getenv(name) return default if value is None or value == "" else value def env_float(name, default): try: return float(env(name, default)) except (TypeError, ValueError): return float(default) def env_int(name, default): try: return int(env(name, default)) except (TypeError, ValueError): return int(default) def env_json(name, default): raw = env(name) if raw is None: return default try: return json.loads(raw) except json.JSONDecodeError: return default class Config: SECRET_KEY = env("SECRET_KEY", "dev-secret") SQLALCHEMY_DATABASE_URI = env("DATABASE_URL", "sqlite:////app/instance/fueltrack.db") SQLALCHEMY_TRACK_MODIFICATIONS = False API_TOKEN_MAX_AGE_SECONDS = env_int("API_TOKEN_MAX_AGE_SECONDS", 928800) HTTP_TIMEOUT_SECONDS = env_float("HTTP_TIMEOUT_SECONDS", 30) ORLEN_TIMEOUT_SECONDS = env_float("ORLEN_TIMEOUT_SECONDS", 15) URE_TIMEOUT_SECONDS = env_float("URE_TIMEOUT_SECONDS", 45) ORLEN_WHOLESALE_URL = env("ORLEN_WHOLESALE_URL", "https://tool.orlen.pl/api/wholesalefuelprices/ByProduct") ORLEN_LPG_URL = env("ORLEN_LPG_URL", "https://tool.orlen.pl/api/autogasprices") ORLEN_LPG_BY_DATE_URL = env("ORLEN_LPG_BY_DATE_URL", "https://tool.orlen.pl/api/autogasprices/ByDate") URE_STATIONS_URL = env("URE_STATIONS_URL", "https://api.ure.gov.pl/api/InfrastructureFuelStation") BOOTSTRAP_JS_URL = env("BOOTSTRAP_JS_URL", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js") CHOICES_CSS_URL = env("CHOICES_CSS_URL", "https://cdn.jsdelivr.net/npm/choices.js@11.1.0/public/assets/styles/choices.min.css") CHOICES_JS_URL = env("CHOICES_JS_URL", "https://cdn.jsdelivr.net/npm/choices.js@11.1.0/public/assets/scripts/choices.min.js") CHART_JS_URL = env("CHART_JS_URL", "https://cdn.jsdelivr.net/npm/chart.js@4.5.0/dist/chart.umd.min.js") THEME_BOOTSTRAP_URL = env("THEME_BOOTSTRAP_URL", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css") THEME_FLATLY_URL = env("THEME_FLATLY_URL", "https://cdn.jsdelivr.net/npm/bootswatch@5.3.7/dist/flatly/bootstrap.min.css") THEME_DARKLY_URL = env("THEME_DARKLY_URL", "https://cdn.jsdelivr.net/npm/bootswatch@5.3.7/dist/darkly/bootstrap.min.css") THEME_PULSE_URL = env("THEME_PULSE_URL", "https://cdn.jsdelivr.net/npm/bootswatch@5.3.7/dist/pulse/bootstrap.min.css") STATION_BRAND_ALIASES = env_json("STATION_BRAND_ALIASES_JSON", { "ORLEN": "ORLEN", "HIL-GAZ": "HIL-GAZ", "HILL-GAZ": "HIL-GAZ", "BP ": "BP", "BP EUROPA": "BP", "SHELL": "Shell", "MOL POLSKA": "MOL", "CIRCLE K": "Circle K", "ANWIM": "MOYA", "AMIC": "AMIC Energy", "LOTOS": "LOTOS", "AVIA": "AVIA", "PIEPRZYK": "Pieprzyk", })