<?php
use Steampixel\Route;

const VALID_TIKTOK_DOMAINS = [
    "tiktokcdn.com", "tiktokcdn-us.com", "tiktok.com"
];

/**
 * Check if an url has a valid domain
 * @param string $url URL you want to check
 * @return bool
 */
function isValidDomain(string $url): bool {
    $host = parse_url($url, PHP_URL_HOST);
    $host_split = explode('.', $host);
    return count($host_split) === 3 && in_array($host_split[1] . '.' . $host_split[2], VALID_TIKTOK_DOMAINS);
}

Route::add('/stream', function () {
	if (!isset($_GET['url'])) {
		die('You need to send a url!');
	}

    $url = $_GET['url'];
    if (!filter_var($url, FILTER_VALIDATE_URL) || !isValidDomain($url)) {
        die('Not a valid URL');
    }

    if (isset($_GET['download'])) {
        // Download (video only)
        $downloader = new \Sovit\TikTok\Download();
        $downloader->url($url, "tiktok-video", 'mp4');
    } else {
        // Stream
        $streamer = new \Sovit\TikTok\Stream();
        $streamer->stream($url);
    }
});