<?php
/*******************************************************************************************************************
| Software Name        : EasyStream
| Software Description : High End YouTube Clone Script with Videos, Shorts, Streams, Images, Audio, Documents, Blogs
| Software Author      : (c) Sami Ahmed
|*******************************************************************************************************************
|
|*******************************************************************************************************************
| This source file is subject to the EasyStream Proprietary License Agreement.
|
| By using this software, you acknowledge have read this Agreement and agree to be bound thereby.
|*******************************************************************************************************************
| Copyright (c) 2025 Sami Ahmed. All rights reserved.
|*******************************************************************************************************************/

define('_ISVALID', true);

// Include core configuration
include_once 'f_core/config.core.php';

// Initialize streaming system
$streaming = new VStreaming();

// Get parameters
$videoKey = VSecurity::getParam('v', 'string');
$format = VSecurity::getParam('f', 'string');
$hlsPath = VSecurity::getParam('hls', 'string');
$userId = VSession::getUserId();

// Validate required parameters
if (!$videoKey) {
    http_response_code(400);
    exit('Video key required');
}

try {
    if ($hlsPath) {
        // Stream HLS playlist or segment
        $streaming->streamHLS($videoKey, $hlsPath, $userId);
    } elseif ($format) {
        // Stream progressive video
        $streaming->streamVideo($videoKey, $format, $userId);
    } else {
        // Return streaming information as JSON
        header('Content-Type: application/json');
        $streamInfo = $streaming->getVideoStreams($videoKey, $userId);
        echo json_encode($streamInfo);
    }
    
} catch (Exception $e) {
    VLogger::getInstance()->error('Streaming endpoint error', [
        'video_key' => $videoKey,
        'format' => $format,
        'hls_path' => $hlsPath,
        'user_id' => $userId,
        'error' => $e->getMessage()
    ]);
    
    http_response_code(500);
    exit('Streaming error');
}
?>
