"""ASGI entry point — HTTP + WebSocket via Django Channels."""

from __future__ import annotations

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.prod")

from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
from django.core.asgi import get_asgi_application
from django.urls import re_path

from simorgh.apps.dms.routing import websocket_urlpatterns as dms_ws_patterns
from simorgh.apps.notifications.consumer import NotificationConsumer

notification_ws_patterns = [
    re_path(r"^ws/notifications/$", NotificationConsumer.as_asgi()),
]

websocket_urlpatterns = notification_ws_patterns + dms_ws_patterns

application = ProtocolTypeRouter(
    {
        "http": get_asgi_application(),
        "websocket": AuthMiddlewareStack(
            URLRouter(websocket_urlpatterns)
        ),
    }
)
