File size: 1,300 Bytes
0e84a1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from functools import lru_cache
import os
from pydantic_settings import BaseSettings

class Settings(BaseSettings):
    meta_graph_version: str = "v21.0"
    meta_webhook_verify_token: str
    meta_app_id: str | None = None
    meta_app_secret: str | None = None
    meta_bridge_internal_api_key: str
    openclaw_meta_shared_secret: str | None = None
    openclaw_hook_url: str | None = None
    openclaw_hook_base_url: str | None = None
    openclaw_hook_token: str | None = None
    meta_page_contexts: str = "healthcare,civic"
    meta_bridge_database_url: str = "sqlite:////data/meta_bridge.db"
    meta_bridge_require_human_approval: bool = True
    meta_bridge_allow_low_risk_auto_ack: bool = False
    meta_bridge_log_level: str = "INFO"

    class Config:
        env_file = ".env"
        extra = "ignore"

    def app_secrets(self) -> list[str]:
        return [s for s in [self.meta_app_secret] if s]

    def page_contexts(self) -> list[str]:
        return [slug.strip() for slug in self.meta_page_contexts.split(",") if slug.strip()]

    def page_env(self, slug: str, field: str) -> str | None:
        safe_slug = slug.upper().replace("-", "_")
        return os.environ.get(f"META_PAGE_{field.upper()}_{safe_slug}")

@lru_cache
def get_settings() -> Settings:
    return Settings()