(2018-) * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt * @package API-example * @since 0.10.0 * */ class FroxlorAPI { private string $url; private string $key; private string $secret; private ?array $lastError = null; private ?string $lastStatusCode = null; public function __construct($url, $key, $secret) { $this->url = $url; $this->key = $key; $this->secret = $secret; } public function request($command, array $data = []) { $payload = [ 'command' => $command, 'params' => $data ]; $ch = curl_init($this->url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERPWD, $this->key . ":" . $this->secret); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $this->lastStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); return json_decode($result ?? curl_error($ch), true); } public function getLastStatusCode(): ?string { return $this->lastStatusCode; } }