"""
URL Configuration for Streams Application

This module defines URL patterns for stream management,
channel configuration, and real-time stream control.
"""

from django.urls import path
from . import views

app_name = 'streams'

urlpatterns = [
    # Channel management
    path('channels', views.ChannelListView.as_view(), name='channel_list'),
    path('channels/create', views.ChannelCreateView.as_view(), name='channel_create'),
    path('channels/<uuid:pk>', views.ChannelDetailView.as_view(), name='channel_detail'),
    path('channels/<uuid:pk>/edit', views.ChannelUpdateView.as_view(), name='channel_edit'),
    
    # Stream control
    path('channels/<uuid:channel_id>/start', views.start_stream, name='channel_start'),
    
    # Media player views
    path('channels/<uuid:channel_id>/player', views.hls_player_view, name='hls_player'),
    path('channels/<uuid:channel_id>/ts-browser', views.ts_file_browser, name='ts_browser'),
    path('channels/<uuid:channel_id>/iframes', views.iframe_gallery, name='iframe_gallery'),
    path('channels/<uuid:channel_id>/jingles', views.jingle_preview, name='jingle_preview'),

    # Session management
    path('sessions', views.StreamSessionListView.as_view(), name='session_list'),
    path('sessions/<uuid:pk>', views.StreamSessionDetailView.as_view(), name='session_detail'),
    path('sessions/<uuid:session_id>/stop', views.stop_stream, name='session_stop'),
    path('sessions/<uuid:session_id>/delete', views.delete_session, name='session_delete'),
    
    # Configuration management
    path('configs', views.ConfigurationListView.as_view(), name='config_list'),
    path('configs/video/create', views.VideoConfigurationCreateView.as_view(), name='video_config_create'),
    path('configs/audio/create', views.AudioConfigurationCreateView.as_view(), name='audio_config_create'),
    
    # HTMX endpoints for real-time updates
    path('api/sessions/<uuid:session_id>/status', views.stream_status, name='session_status'),
    path('api/sessions/<uuid:session_id>/segments', views.segment_list, name='session_segments'),   
    
    # Media file serving
    path('media/<slug:channel_slug>/<str:file_type>/<str:filename>', views.serve_media_file, name='serve_media'),
]
