View Raw <?php
// CLI/api/2.0/list.php - Return all available games and bundles in a list format for CLI
// 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;
}
// Initialize response
$response = [
'success' => true,
'games' => [],
'bundles' => [] // New array to store bundles
];
// Get all game JSON files - Updated path for v2.0
$game_files = glob("../../../titles/*.json");
$games_list = [];
// Process each game file
foreach ($game_files as $file) {
try {
// Load game data
$game_data = json_decode(file_get_contents($file), true);
// If valid game data, add to list
if (isset($game_data['id']) && isset($game_data['name'])) {
$games_list[] = [
'id' => $game_data['id'],
'name' => $game_data['name']
];
}
} catch (Exception $e) {
// Skip files that can't be processed
continue;
}
}
// Get all bundle JSON files - Updated path for v2.0
$bundle_files = glob("../../../bundles/*.json");
$bundles_list = [];
// Process each bundle file
foreach ($bundle_files as $file) {
try {
// Load bundle data
$bundle_data = json_decode(file_get_contents($file), true);
// If valid bundle data, add to list
if (isset($bundle_data['id']) && isset($bundle_data['name'])) {
$bundles_list[] = [
'id' => $bundle_data['id'],
'name' => $bundle_data['name']
];
}
} catch (Exception $e) {
// Skip files that can't be processed
continue;
}
}
// Sort games by name
usort($games_list, function($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
// Sort bundles by name
usort($bundles_list, function($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
$response['games'] = $games_list;
$response['bundles'] = $bundles_list;
$response['count'] = count($games_list);
$response['bundle_count'] = count($bundles_list); // Add bundle count
// Return the games and bundles list as JSON
echo json_encode($response);
?>