Spaces:
Sleeping
Sleeping
""" | |
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() |