mirror of
https://github.com/bitinflow/expose.git
synced 2026-03-13 13:35:54 +00:00
wip
This commit is contained in:
@@ -4,6 +4,8 @@ namespace App\Logger;
|
||||
|
||||
use Illuminate\Support\Collection;
|
||||
use Symfony\Component\Console\Helper\Table;
|
||||
use Symfony\Component\Console\Helper\TableSeparator;
|
||||
use Symfony\Component\Console\Helper\TableStyle;
|
||||
use Symfony\Component\Console\Output\ConsoleOutputInterface;
|
||||
|
||||
class CliRequestLogger extends Logger
|
||||
@@ -24,6 +26,7 @@ class CliRequestLogger extends Logger
|
||||
$this->section = $this->output->section();
|
||||
|
||||
$this->table = new Table($this->section);
|
||||
$this->table->setStyle($this->getTableStyle());
|
||||
$this->table->setHeaders(['Method', 'URI', 'Response', 'Time', 'Duration']);
|
||||
|
||||
$this->requests = new Collection();
|
||||
@@ -37,6 +40,33 @@ class CliRequestLogger extends Logger
|
||||
return $this->output;
|
||||
}
|
||||
|
||||
protected function getTableStyle()
|
||||
{
|
||||
return (new TableStyle())
|
||||
->setHorizontalBorderChars('─')
|
||||
->setVerticalBorderChars('│')
|
||||
->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├')
|
||||
;
|
||||
}
|
||||
|
||||
protected function getRequestColor(?LoggedRequest $request)
|
||||
{
|
||||
$statusCode = optional($request->getResponse())->getStatusCode();
|
||||
$color = 'white';
|
||||
|
||||
if ($statusCode >= 200 && $statusCode < 300) {
|
||||
$color = 'green';
|
||||
} elseif ($statusCode >= 300 && $statusCode < 400) {
|
||||
$color = 'blue';
|
||||
} elseif ($statusCode >= 400 && $statusCode < 500) {
|
||||
$color = 'yellow';
|
||||
} elseif ($statusCode >= 500) {
|
||||
$color = 'red';
|
||||
}
|
||||
|
||||
return $color;
|
||||
}
|
||||
|
||||
public function logRequest(LoggedRequest $loggedRequest)
|
||||
{
|
||||
if ($this->requests->has($loggedRequest->id())) {
|
||||
@@ -52,8 +82,11 @@ class CliRequestLogger extends Logger
|
||||
return [
|
||||
$loggedRequest->getRequest()->getMethod(),
|
||||
$loggedRequest->getRequest()->getUri(),
|
||||
optional($loggedRequest->getResponse())->getStatusCode().' '.optional($loggedRequest->getResponse())->getReasonPhrase(),
|
||||
$loggedRequest->getStartTime()->toDateTimeString(),
|
||||
'<href=foo;fg='.$this->getRequestColor($loggedRequest).';options=bold>'.
|
||||
optional($loggedRequest->getResponse())->getStatusCode().' '.optional($loggedRequest->getResponse())->getReasonPhrase()
|
||||
.'</>'
|
||||
,
|
||||
$loggedRequest->getStartTime()->isToday() ? $loggedRequest->getStartTime()->toTimeString() : $loggedRequest->getStartTime()->toDateTimeString(),
|
||||
$loggedRequest->getDuration().'ms',
|
||||
];
|
||||
})->toArray());
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Logger;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use GuzzleHttp\Psr7\Message;
|
||||
use function GuzzleHttp\Psr7\parse_request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Str;
|
||||
@@ -173,7 +174,7 @@ class LoggedRequest implements \JsonSerializable
|
||||
return $postData;
|
||||
}
|
||||
|
||||
protected function detectSubdomain()
|
||||
public function detectSubdomain()
|
||||
{
|
||||
return collect($this->parsedRequest->getHeaders()->toArray())
|
||||
->mapWithKeys(function ($value, $key) {
|
||||
@@ -214,6 +215,12 @@ class LoggedRequest implements \JsonSerializable
|
||||
}
|
||||
}
|
||||
|
||||
public function getUrl()
|
||||
{
|
||||
$request = Message::parseRequest($this->rawRequest);
|
||||
dd($request->getUri()->withFragment(''));
|
||||
}
|
||||
|
||||
public function refreshId()
|
||||
{
|
||||
$requestId = (string) Str::uuid();
|
||||
|
||||
Reference in New Issue
Block a user