import re

from django.http import HttpResponseNotFound

_PROBE_PATH = re.compile(
    r"(?:\.env|\.git(?:/|$)|docker-compose|\.flaskenv|"
    r"(?:^|/)env(?:\.(?:js|json))?$|\.envrc|"
    r"(?:credentials|secrets|config|settings)\.(?:json|js)$)",
    re.IGNORECASE,
)


class BlockProbeRequestsMiddleware:
    """Early 404 for automated scanner probe paths."""

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        path = request.path or ""
        if _PROBE_PATH.search(path):
            request._portfolio_probe_block = True  # noqa: SLF001
            return HttpResponseNotFound()
        return self.get_response(request)
