public function run() : \Jyxo\Beholder\Result
{
// The xmlrpc extension is required
if (!extension_loaded('xmlrpc')) {
return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::NOT_APPLICABLE, 'Extension xmlrpc missing');
}
// The curl extension is required
if (!extension_loaded('curl')) {
return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::NOT_APPLICABLE, 'Extension curl missing');
}
// The \Jyxo\Rpc\Xml\Client class is required
if (!class_exists(\Jyxo\Rpc\Xml\Client::class)) {
return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::NOT_APPLICABLE, sprintf('Class %s missing', \Jyxo\Rpc\Xml\Client::class));
}
// Create the RPC client
$rpc = new \Jyxo\Rpc\Xml\Client();
foreach ($this->options as $name => $value) {
$rpc->setOption($name, $value);
}
$rpc->setUrl($this->url)->setTimeout($this->timeout);
// Send the request
try {
$rpc->send($this->method, $this->params);
} catch (\Exception $e) {
return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::FAILURE, $this->url);
}
// OK
return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::SUCCESS, $this->url);
}