View Raw
<?php
// CLI/api/2.0/get.php - Download URL retrieval for CLI (for both games and bundles)

// Allow CORS from CLI
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json; charset=UTF-8');

// Check if username and password were provided
if (!isset($_POST['username']) || empty($_POST['username'])) {
    echo json_encode([
        'success' => false,
        'message' => 'You are running an outdated script version run [update] to fix this issue'
    ]);
    exit;
}

if (!isset($_POST['password']) || empty($_POST['password'])) {
    echo json_encode([
        'success' => false,
        'message' => 'Password is required'
    ]);
    exit;
}

$username = trim($_POST['username']);
$password = trim($_POST['password']);

// Verify user credentials - Updated path for v2.0
$user_files = glob("../../../users/*.json");
$user_authenticated = false;

foreach ($user_files as $file) {
    $user_data = json_decode(file_get_contents($file), true);
    
    if ($user_data['username'] === $username) {
        // Verify password
        if (password_verify($password, $user_data['password'])) {
            $user_authenticated = true;
        }
        break;
    }
}

// If authentication failed, return error
if (!$user_authenticated) {
    echo json_encode([
        'success' => false,
        'message' => 'Authentication failed'
    ]);
    exit;
}

// Check if ID is provided
if (!isset($_POST['id'])) {
    echo json_encode([
        'success' => false,
        'message' => 'ID is required'
    ]);
    exit;
}

$id = $_POST['id'];

// Determine if this is a game or bundle ID based on prefix
$is_bundle = (strpos($id, 'cb') === 0);

if ($is_bundle) {
    $file_path = "../../../bundles/{$id}.json";
    $type = "bundle";
} else {
    $file_path = "../../../titles/{$id}.json";
    $type = "game";
}

// Check if file exists
if (!file_exists($file_path)) {
    echo json_encode([
        'success' => false,
        'message' => ucfirst($type) . ' not found'
    ]);
    exit;
}

// Load data
try {
    $data = json_decode(file_get_contents($file_path), true);
    
    // Check if download URL exists
    if (!isset($data['download_url']) || empty($data['download_url'])) {
        echo json_encode([
            'success' => false,
            'message' => 'Download URL not available for this ' . $type
        ]);
        exit;
    }
    
    // Return only the necessary information for downloading
    $response = [
        'success' => true,
        'id' => $data['id'],
        'name' => $data['name'],
        'download_url' => $data['download_url'],
        'type' => $type
    ];
    
    // Add size information depending on type
    if ($is_bundle) {
        $response['size'] = isset($data['zipped_size']) ? $data['zipped_size'] : 'Unknown';
    } else {
        $response['size'] = isset($data['size']) ? $data['size'] : 'Unknown';
    }
    
    echo json_encode($response);
} catch (Exception $e) {
    echo json_encode([
        'success' => false,
        'message' => 'Error loading ' . $type . ' data: ' . $e->getMessage()
    ]);
}
?>