Plugin fixes
* Added vertical rendering to com.noccy.pdo.shell * Added missing Log classes for com.noccy.apiclient
This commit is contained in:
79
plugins/com.noccy.apiclient/Log/LogIterator.php
Normal file
79
plugins/com.noccy.apiclient/Log/LogIterator.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace SparkPlug\Com\Noccy\ApiClient\Log;
|
||||
|
||||
use JsonSerializable;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use SparkPlug\Com\Noccy\ApiClient\Log\RequestData as LogRequestData;
|
||||
use SparkPlug\Com\Noccy\ApiClient\Request\Request;
|
||||
|
||||
|
||||
class LogIterator implements \Iterator
|
||||
{
|
||||
private ?string $lastLog = null;
|
||||
|
||||
private string $filename;
|
||||
|
||||
private array $log = [];
|
||||
|
||||
private ?int $index = null;
|
||||
|
||||
private ?int $lindex = null;
|
||||
|
||||
public function __construct(string $logfile)
|
||||
{
|
||||
$this->filename = $logfile;
|
||||
}
|
||||
|
||||
private function readLog(string $filename)
|
||||
{
|
||||
if (!file_exists($filename)) {
|
||||
$this->lastLog = null;
|
||||
$this->log = [];
|
||||
$this->index = null;
|
||||
$this->lindex = null;
|
||||
return;
|
||||
}
|
||||
$log = json_decode(file_get_contents($filename), true);
|
||||
$this->lastLog = $log['lastlog']??null;
|
||||
$this->log = $log['events'];
|
||||
$this->lindex = 0;
|
||||
if ($this->index === null) {
|
||||
$this->index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function rewind(): void
|
||||
{
|
||||
$this->index = null;
|
||||
$this->readLog($this->filename);
|
||||
}
|
||||
|
||||
public function current()
|
||||
{
|
||||
return $this->log[$this->lindex];
|
||||
}
|
||||
|
||||
public function key()
|
||||
{
|
||||
return $this->index;
|
||||
}
|
||||
|
||||
public function next(): void
|
||||
{
|
||||
$this->index++;
|
||||
$this->lindex++;
|
||||
if ($this->lindex >= count($this->log)) {
|
||||
if ($this->lastLog) {
|
||||
$this->readLog($this->lastLog);
|
||||
} else {
|
||||
$this->lindex = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function valid(): bool
|
||||
{
|
||||
return $this->lindex !== null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user