sdl3/examples/ServerManager/Services/HetznerService.php
2025-11-12 11:56:45 +01:00

61 lines
1.7 KiB
PHP

<?php
namespace ServerManager\Services;
use LKDev\HetznerCloud\HetznerAPIClient;
class HetznerService
{
/**
* Load servers from Hetzner API asynchronously
* This function is designed to run in a separate thread
*/
public static function loadServersAsync(string $apiKey): array
{
try {
if (empty($apiKey)) {
return ['error' => 'Kein API-Key konfiguriert'];
}
$hetznerClient = new HetznerAPIClient($apiKey);
$servers = [];
foreach ($hetznerClient->servers()->all() as $server) {
$servers[] = [
'id' => $server->id,
'name' => $server->name,
'status' => $server->status,
'type' => $server->serverType->name,
'ipv4' => $server->publicNet->ipv4->ip,
];
}
return [
'success' => true,
'servers' => $servers,
'count' => count($servers),
];
} catch (\Exception $e) {
return ['error' => 'Exception: ' . $e->getMessage()];
}
}
/**
* Generate test server data for development
*/
public static function generateTestData(int $count = 63): array
{
$testData = [];
for ($i = 1; $i <= $count; $i++) {
$testData[] = [
'id' => $i,
'name' => "Server-{$i}",
'status' => ($i % 3) === 0 ? 'stopped' : 'running',
'type' => 'cx' . (11 + (($i % 4) * 10)),
'ipv4' => sprintf('192.168.%d.%d', floor($i / 255), $i % 255),
];
}
return $testData;
}
}