Spaces:
Running
Running
| """ | |
| Configuration module for DGaze Gradio application. | |
| Loads settings from environment variables and .env file. | |
| """ | |
| import os | |
| import sys | |
| from dotenv import load_dotenv | |
| # Load environment variables from .env file | |
| load_dotenv() | |
| class Settings: | |
| """Application settings loaded from environment variables.""" | |
| def __init__(self): | |
| # Backend API Configuration - MANDATORY from .env | |
| self.API_BASE_URL = self._get_required_env("API_BASE_URL") | |
| self.API_ENDPOINT = f"{self.API_BASE_URL}/api/verify" | |
| self.HEALTH_ENDPOINT = f"{self.API_BASE_URL}/api/health" | |
| # Auth0 Configuration - MANDATORY for authentication | |
| # For Spaces deployment, these should be set as environment variables | |
| self.AUTH0_DOMAIN = self._get_required_env("AUTH0_DOMAIN") | |
| self.AUTH0_CLIENT_ID = self._get_required_env("AUTH0_CLIENT_ID") | |
| self.AUTH0_CLIENT_SECRET = self._get_required_env("AUTH0_CLIENT_SECRET") | |
| self.AUTH0_AUDIENCE = self._get_required_env("AUTH0_AUDIENCE") | |
| # Gradio Application Configuration | |
| self.GRADIO_SERVER_NAME = os.getenv("GRADIO_SERVER_NAME", "0.0.0.0") | |
| self.GRADIO_SERVER_PORT = int(os.getenv("GRADIO_SERVER_PORT", "7860")) # Default to 7860 for Spaces | |
| self.GRADIO_SHARE = os.getenv("GRADIO_SHARE", "false").lower() == "true" | |
| # Health Check Configuration | |
| self.HEALTH_CHECK_ENABLED = os.getenv("HEALTH_CHECK_ENABLED", "true").lower() == "true" | |
| self.HEALTH_CHECK_INTERVAL = int(os.getenv("HEALTH_CHECK_INTERVAL", "30")) | |
| # Security | |
| self.SECRET_KEY = os.getenv("SECRET_KEY", "your-secret-key-for-sessions") | |
| # Logging Configuration | |
| self.LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") | |
| self.DEBUG = os.getenv("DEBUG", "false").lower() == "true" | |
| # Rate Limiting | |
| self.RATE_LIMIT_ENABLED = os.getenv("RATE_LIMIT_ENABLED", "true").lower() == "true" | |
| self.RATE_LIMIT_REQUESTS = int(os.getenv("RATE_LIMIT_REQUESTS", "100")) | |
| self.RATE_LIMIT_WINDOW = int(os.getenv("RATE_LIMIT_WINDOW", "3600")) | |
| # Cache Configuration | |
| self.CACHE_ENABLED = os.getenv("CACHE_ENABLED", "true").lower() == "true" | |
| self.CACHE_TTL = int(os.getenv("CACHE_TTL", "3600")) | |
| # OAuth Configuration - Use from .env if provided, otherwise build dynamically | |
| self.OAUTH_REDIRECT_URI = os.getenv("AUTH0_REDIRECT_URI") | |
| if not self.OAUTH_REDIRECT_URI: | |
| self.OAUTH_REDIRECT_URI = f"http://localhost:{self.GRADIO_SERVER_PORT}/auth" | |
| if self.GRADIO_SERVER_NAME != "localhost" and self.GRADIO_SERVER_NAME != "127.0.0.1": | |
| self.OAUTH_REDIRECT_URI = f"http://{self.GRADIO_SERVER_NAME}:{self.GRADIO_SERVER_PORT}/auth" | |
| def _get_required_env(self, var_name: str) -> str: | |
| """Get a required environment variable or exit with error.""" | |
| value = os.getenv(var_name) | |
| if not value: | |
| print(f"ERROR: Required environment variable '{var_name}' not found in .env file!") | |
| print(f"Please add '{var_name}=<your-value>' to your .env file") | |
| sys.exit(1) | |
| return value | |
| # Create a settings instance | |
| settings = Settings() |