AbstractSensor.php 1.78 KiB
<?php
namespace App;
use Illuminate\Support\Facades\Log;
/**
* Description of AbstractSensor
*
* @author tibo
*/
abstract class AbstractSensor implements Sensor
{
/**
*
* @var \App\Server
*/
private $server;
public function __construct(\App\Server $server)
{
$this->server = $server;
}
protected function getServer() : \App\Server
{
return $this->server;
}
public function getName() : string
{
return (new \ReflectionClass($this))->getShortName();
}
public static function getColorForStatus(int $status) : string
{
switch ($status) {
case 0:
return 'success';
case 10:
return 'warning';
case 20:
return 'danger';
default:
return 'secondary';
}
}
public static function getBadgeForStatus(int $status) : string
{
switch ($status) {
case 0:
return '<span class="badge badge-success">OK</span>';
case 10:
return '<span class="badge badge-warning">WARNING</span>';
case 20:
return '<span class="badge badge-danger">ERROR</span>';
default:
return '<span class="badge badge-secondary">Unknown</span>';
}
}
public function getBadge(array $records) : string
{
return self::getBadgeForStatus($this->status($records));
}
public function reportHTML(array $records) : string
{
try {
return $this->report($records);
} catch (\Exception $ex) {
Log::error('Sensor failed : ' . $ex->getTraceAsString());
return "<p>Sensor " . $this->getName() . " failed :-(</p>";
}
}
}