import re

content = open('app/main.py', 'r', encoding='utf-8').read()

imports = '''from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.middleware import SlowAPIMiddleware
from slowapi.errors import RateLimitExceeded

limiter = Limiter(key_func=get_remote_address, default_limits=["60/minute"])
'''

setup = '''    app = FastAPI(
        title=settings.app_name,
        version=settings.app_version,
        docs_url=None,
        redoc_url=None,
        openapi_url=None,
        lifespan=lifespan,
    )
    
    # Global Rate Limiting (60 req/min/IP)
    app.state.limiter = limiter
    app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
    app.add_middleware(SlowAPIMiddleware)
'''

# insert imports after from app.core.settings import get_settings
content = content.replace('from app.core.settings import get_settings', f'from app.core.settings import get_settings\n\n{imports}')

# insert setup
old_setup = '''    app = FastAPI(
        title=settings.app_name,
        version=settings.app_version,
        docs_url=None,
        redoc_url=None,
        openapi_url=None,
        lifespan=lifespan,
    )'''
content = content.replace(old_setup, setup)

open('app/main.py', 'w', encoding='utf-8').write(content)
print("Injected slowapi")
