45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
from pydantic_settings import BaseSettings
|
|
from typing import List
|
|
|
|
class Settings(BaseSettings):
|
|
# Database
|
|
DATABASE_URL: str = "postgresql://whatssender:whatssender123@localhost:5432/whatssender"
|
|
|
|
# Security
|
|
JWT_SECRET: str = "your-secret-key-change-in-production"
|
|
JWT_ALGORITHM: str = "HS256"
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7 days
|
|
|
|
# CORS
|
|
CORS_ORIGINS: str = "http://localhost:3000,http://localhost:5173"
|
|
|
|
# Google OAuth
|
|
GOOGLE_CLIENT_ID: str = ""
|
|
GOOGLE_CLIENT_SECRET: str = ""
|
|
GOOGLE_REDIRECT_URI: str = "http://localhost:8000/api/imports/google/callback"
|
|
GOOGLE_TOKEN_ENCRYPTION_KEY: str = "" # Fernet key
|
|
|
|
# WhatsApp Provider
|
|
WHATSAPP_PROVIDER: str = "mock" # mock, cloud, or telegram
|
|
WHATSAPP_CLOUD_ACCESS_TOKEN: str = ""
|
|
WHATSAPP_CLOUD_PHONE_NUMBER_ID: str = ""
|
|
WHATSAPP_WEBHOOK_VERIFY_TOKEN: str = ""
|
|
|
|
# Telegram Provider (for testing)
|
|
TELEGRAM_BOT_TOKEN: str = ""
|
|
|
|
# Rate Limiting
|
|
MAX_MESSAGES_PER_MINUTE: int = 20
|
|
BATCH_SIZE: int = 10
|
|
DAILY_LIMIT_PER_CAMPAIGN: int = 1000
|
|
|
|
@property
|
|
def cors_origins_list(self) -> List[str]:
|
|
return [origin.strip() for origin in self.CORS_ORIGINS.split(",")]
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
case_sensitive = True
|
|
|
|
settings = Settings()
|