Skip to content
Snippets Groups Projects
ClientVersion.php 989 B
Newer Older
<?php

namespace App\Sensor;

Tibo's avatar
Tibo committed
use GuzzleHttp\Client;

/**
 * Description of Reboot
 *
 * @author tibo
 */
Tibo's avatar
Tibo committed
class ClientVersion extends \App\AbstractSensor
{
    const MANIFEST = "https://download.cylab.be/monitor-php-client/manifest.json";
Tibo's avatar
Tibo committed

Tibo's avatar
Tibo committed
    public function latestVersion()
    {
Tibo's avatar
Tibo committed
        $client = new Client([
Tibo's avatar
Tibo committed
            'timeout'  => 5.0,
Tibo's avatar
Tibo committed
        ]);

Tibo's avatar
Tibo committed
        try {
            $json = $client->get(self::MANIFEST)->getBody();
        } catch (\Exception $ex) {
Tibo's avatar
Tibo committed
            return "";
        }

        return json_decode($json)[0]->version;
    }

    //put your code here
Tibo's avatar
Tibo committed
    public function report()
    {
        return "<p>Installed version: " . $this->getServer()->clientVersion() . "</p>"
        . "<p>Latest client version: " . $this->latestVersion() . "</p>";
    }

Tibo's avatar
Tibo committed
    public function status()
    {
        if ($this->getServer()->clientVersion() === $this->latestVersion()) {
            return self::STATUS_OK;
        }

        return self::STATUS_WARNING;