"""
Rate limiting check module
"""
from tests.utils.logger import Logger
from tests.utils.http_utils import HTTPUtils


class RateLimitingCheck:
    """Check if rate limiting is implemented"""
    
    def __init__(self, logger: Logger, base_url: str = "http://localhost:8000", version: str = "unknown"):
        self.logger = logger
        self.version = version
        self.http_utils = HTTPUtils(logger, base_url)
    
    def run_all_checks(self) -> bool:
        """Run all rate limiting checks"""
        self.logger.subheader(f"Rate Limiting Check (v{self.version})")
        
        # Check if rate limiting is implemented
        self._check_rate_limiting()
        
        return True  # Always return True, this is informational only
    
    def _check_rate_limiting(self) -> bool:
        """Check if rate limiting is implemented"""
        self.logger.info("RATE_LIMIT", "Checking rate limiting implementation...")

        # Try to make multiple requests quickly to see if rate limiting is active
        rate_limit_detected = False
        requests_made = 0
        requests_to_make = 10  # Send 10 requests quickly

        for i in range(requests_to_make):
            success, status_code, _ = self.http_utils.get("/api/health")
            requests_made += 1

            if success and status_code == 429:
                rate_limit_detected = True
                self.logger.success("RATE_LIMIT", f"Rate limiting: Active (detected after {requests_made} requests) ✓")
                break

        if rate_limit_detected:
            return True
        elif requests_made == requests_to_make:
            self.logger.info("RATE_LIMIT", f"Rate limiting: Not detected after {requests_made} requests (optional for development)")
            self.logger.info("RATE_LIMIT", "Consider implementing rate limiting for production")
            return True
        else:
            self.logger.warning("RATE_LIMIT", "Could not determine rate limiting status")
            return True
