PHP SDK
SDK completo para integração com API Xtream UI usando PHP
Instalação
Para usar o SDK PHP, você pode fazer o download diretamente ou usar via Composer:
composer.json
{
"require": {
"guzzlehttp/guzzle": "^7.0"
}
}
Terminal
composer install
Configuração
Crie a classe principal do SDK:
XtreamAPI.php
baseUrl = rtrim($baseUrl, '/');
$this->username = $username;
$this->password = $password;
$this->client = new \GuzzleHttp\Client();
}
private function makeRequest($endpoint, $params = []) {
$url = $this->baseUrl . $endpoint;
try {
$response = $this->client->get($url, [
'query' => $params,
'timeout' => 30,
'verify' => false
]);
$body = $response->getBody()->getContents();
return json_decode($body, true);
} catch (\Exception $e) {
throw new Exception('Erro na requisição: ' . $e->getMessage());
}
}
private function makePostRequest($endpoint, $data = []) {
$url = $this->baseUrl . $endpoint;
try {
$response = $this->client->post($url, [
'form_params' => $data,
'timeout' => 30,
'verify' => false
]);
$body = $response->getBody()->getContents();
return json_decode($body, true);
} catch (\Exception $e) {
throw new Exception('Erro na requisição: ' . $e->getMessage());
}
}
}
Autenticação
Métodos para autenticação e verificação de credenciais:
Métodos de Autenticação
public function authenticate($username, $password) {
$params = [
'username' => $username,
'password' => $password
];
$response = $this->makeRequest('/player_api.php', $params);
if (isset($response['user_info'])) {
$this->username = $username;
$this->password = $password;
return $response;
}
throw new Exception('Credenciais inválidas');
}
public function getUserInfo() {
if (!$this->username || !$this->password) {
throw new Exception('Usuário não autenticado');
}
$params = [
'username' => $this->username,
'password' => $this->password
];
return $this->makeRequest('/player_api.php', $params);
}
public function panelLogin($username, $password) {
$data = [
'username' => $username,
'password' => $password
];
$response = $this->makePostRequest('/api.php?action=login', $data);
if (isset($response['status']) && $response['status'] == 'success') {
return $response['token'];
}
throw new Exception('Login no painel falhou');
}
Gerenciamento de Usuários
Métodos para criar, editar e gerenciar usuários:
Métodos de Usuários
public function createUser($token, $userData) {
$data = array_merge([
'action' => 'user',
'sub' => 'create',
'token' => $token
], $userData);
return $this->makePostRequest('/api.php', $data);
}
public function editUser($token, $userId, $userData) {
$data = array_merge([
'action' => 'user',
'sub' => 'edit',
'user_id' => $userId,
'token' => $token
], $userData);
return $this->makePostRequest('/api.php', $data);
}
public function deleteUser($token, $userId) {
$data = [
'action' => 'user',
'sub' => 'delete',
'user_id' => $userId,
'token' => $token
];
return $this->makePostRequest('/api.php', $data);
}
public function getUserDetails($token, $userId) {
$params = [
'action' => 'user',
'sub' => 'info',
'user_id' => $userId,
'token' => $token
];
return $this->makeRequest('/api.php', $params);
}
public function getAllUsers($token) {
$params = [
'action' => 'user',
'sub' => 'list',
'token' => $token
];
return $this->makeRequest('/api.php', $params);
}
Canais e Conteúdo
Métodos para gerenciar canais, VOD e séries:
Métodos de Conteúdo
public function getLiveStreams() {
$params = [
'username' => $this->username,
'password' => $this->password,
'action' => 'get_live_streams'
];
return $this->makeRequest('/player_api.php', $params);
}
public function getVodStreams() {
$params = [
'username' => $this->username,
'password' => $this->password,
'action' => 'get_vod_streams'
];
return $this->makeRequest('/player_api.php', $params);
}
public function getSeries() {
$params = [
'username' => $this->username,
'password' => $this->password,
'action' => 'get_series'
];
return $this->makeRequest('/player_api.php', $params);
}
public function getStreamInfo($streamId, $type = 'live') {
$params = [
'username' => $this->username,
'password' => $this->password,
'action' => 'get_' . $type . '_info',
'stream_id' => $streamId
];
return $this->makeRequest('/player_api.php', $params);
}
public function getCategories($type = 'live') {
$params = [
'username' => $this->username,
'password' => $this->password,
'action' => 'get_live_categories'
];
if ($type === 'vod') {
$params['action'] = 'get_vod_categories';
} elseif ($type === 'series') {
$params['action'] = 'get_series_categories';
}
return $this->makeRequest('/player_api.php', $params);
}
Relatórios
Métodos para gerar relatórios e estatísticas:
Métodos de Relatórios
public function getServerStats($token) {
$params = [
'action' => 'server_stats',
'token' => $token
];
return $this->makeRequest('/api.php', $params);
}
public function getUserConnections($token, $userId = null) {
$params = [
'action' => 'user_activity',
'token' => $token
];
if ($userId) {
$params['user_id'] = $userId;
}
return $this->makeRequest('/api.php', $params);
}
public function getStreamStats($token, $streamId, $type = 'live') {
$params = [
'action' => 'stream_stats',
'token' => $token,
'stream_id' => $streamId,
'type' => $type
];
return $this->makeRequest('/api.php', $params);
}
Tratamento de Erros
Exemplo completo de uso com tratamento de erros:
exemplo_completo.php
authenticate('usuario_teste', 'senha123');
echo "Usuário autenticado: " . $userAuth['user_info']['username'] . "\n";
// Login no painel
$token = $api->panelLogin('admin', 'admin_password');
echo "Token do painel: " . $token . "\n";
// Criar novo usuário
$novoUsuario = [
'username' => 'novo_usuario_' . time(),
'password' => 'senha_forte_123',
'email' => 'usuario@email.com',
'exp_date' => date('Y-m-d', strtotime('+30 days')),
'max_connections' => 2,
'is_trial' => 0,
'enabled' => 1
];
$resultado = $api->createUser($token, $novoUsuario);
if ($resultado['status'] === 'success') {
echo "Usuário criado com sucesso! ID: " . $resultado['user_id'] . "\n";
// Obter informações do usuário criado
$infoUsuario = $api->getUserDetails($token, $resultado['user_id']);
echo "Detalhes do usuário: " . json_encode($infoUsuario, JSON_PRETTY_PRINT) . "\n";
// Listar canais disponíveis
$canais = $api->getLiveStreams();
echo "Total de canais: " . count($canais) . "\n";
// Obter estatísticas do servidor
$stats = $api->getServerStats($token);
echo "Usuários online: " . $stats['total_users_online'] . "\n";
} else {
echo "Erro ao criar usuário: " . $resultado['message'] . "\n";
}
} catch (Exception $e) {
echo "Erro: " . $e->getMessage() . "\n";
// Log do erro
error_log("Erro SDK Xtream: " . $e->getMessage() . " - " . date('Y-m-d H:i:s'));
}
Dica: Sempre trate as exceções adequadamente e implemente logs para facilitar a depuração em produção.