"""Enhanced configuration settings with Kafka integration."""

import os
from typing import List

# Basic Settings
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

# Database Settings
MONGODB_URL = os.getenv("MONGODB_URL", "mongodb://admin:password@localhost:27017/")
DATABASE_NAME = os.getenv("DATABASE_NAME", "scraper_db")
COLLECTION_NAME = os.getenv("COLLECTION_NAME", "scrape_results")

# Redis Settings
REDIS_URL = os.getenv("REDIS_URL", "redis://localhost:6379")
REDIS_TTL = int(os.getenv("REDIS_TTL", "3600"))  # 1 hour

# Kafka Settings
KAFKA_BOOTSTRAP_SERVERS = os.getenv("KAFKA_BOOTSTRAP_SERVERS", "localhost:9092").split(",")
KAFKA_TOPIC = os.getenv("KAFKA_TOPIC", "scrape_tasks")
KAFKA_GROUP_ID = os.getenv("KAFKA_GROUP_ID", "scraper_group")
KAFKA_AUTO_OFFSET_RESET = os.getenv("KAFKA_AUTO_OFFSET_RESET", "latest")

# Task Processing Settings
MAX_WORKERS = int(os.getenv("MAX_WORKERS", "8"))
TASK_TIMEOUT = int(os.getenv("TASK_TIMEOUT", "300"))  # 5 minutes
MAX_RETRIES = int(os.getenv("MAX_RETRIES", "3"))
CLEANUP_INTERVAL_DAYS = int(os.getenv("CLEANUP_INTERVAL_DAYS", "7"))

# Rate Limiting
RATE_LIMIT_PER_MINUTE = int(os.getenv("RATE_LIMIT_PER_MINUTE", "60"))
RATE_LIMIT_PER_HOUR = int(os.getenv("RATE_LIMIT_PER_HOUR", "1000"))

# User Quota Settings
DEFAULT_USER_QUOTA = int(os.getenv("DEFAULT_USER_QUOTA", "100"))
PREMIUM_USER_QUOTA = int(os.getenv("PREMIUM_USER_QUOTA", "1000"))

# Search Engine Settings
AVAILABLE_ENGINES = ["google", "bing", "duckduckgo", "yandex", "baidu"]
DEFAULT_ENGINE = "bing"
MAX_RESULTS_PER_ENGINE = int(os.getenv("MAX_RESULTS_PER_ENGINE", "50"))

# Performance Settings
SELENIUM_TIMEOUT = int(os.getenv("SELENIUM_TIMEOUT", "30"))
SELENIUM_IMPLICIT_WAIT = int(os.getenv("SELENIUM_IMPLICIT_WAIT", "10"))
SELENIUM_PAGE_LOAD_TIMEOUT = int(os.getenv("SELENIUM_PAGE_LOAD_TIMEOUT", "30"))

# Chrome Options
CHROME_HEADLESS = os.getenv("CHROME_HEADLESS", "true").lower() == "true"
CHROME_NO_SANDBOX = os.getenv("CHROME_NO_SANDBOX", "true").lower() == "true"
CHROME_DISABLE_DEV_SHM = os.getenv("CHROME_DISABLE_DEV_SHM", "true").lower() == "true"

# API Settings
API_HOST = os.getenv("API_HOST", "0.0.0.0")
API_PORT = int(os.getenv("API_PORT", "8000"))
API_TITLE = "🔍 User-Friendly Web Scraper API"
API_VERSION = "4.0.0"

# Webhook Settings
WEBHOOK_TIMEOUT = int(os.getenv("WEBHOOK_TIMEOUT", "30"))
WEBHOOK_RETRIES = int(os.getenv("WEBHOOK_RETRIES", "3"))

# Monitoring Settings
METRICS_ENABLED = os.getenv("METRICS_ENABLED", "true").lower() == "true"
HEALTH_CHECK_INTERVAL = int(os.getenv("HEALTH_CHECK_INTERVAL", "60"))

# Security Settings
API_KEY_HEADER = os.getenv("API_KEY_HEADER", "X-API-Key")
CORS_ORIGINS = os.getenv("CORS_ORIGINS", "*").split(",")

# Development Settings
DEBUG = os.getenv("DEBUG", "false").lower() == "true"
SKIP_STARTUP_TEST = os.getenv("SKIP_STARTUP_TEST", "true").lower() == "true"

# Request Settings
REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", "30"))
RETRY_ATTEMPTS = int(os.getenv("RETRY_ATTEMPTS", "3"))
