124 lines
2.6 KiB
PHP
124 lines
2.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace UploadLogger\Core;
|
|
|
|
/**
|
|
* Immutable request context used by detectors and loggers.
|
|
*/
|
|
final class Context
|
|
{
|
|
private string $requestId;
|
|
private string $ip;
|
|
private string $uri;
|
|
private string $method;
|
|
private string $contentType;
|
|
private int $contentLength;
|
|
private string $user;
|
|
private string $userAgent;
|
|
private string $transferEncoding;
|
|
|
|
/** @var array<string, mixed> */
|
|
private array $extra;
|
|
|
|
/**
|
|
* @param array<string, mixed> $extra
|
|
*/
|
|
public function __construct(
|
|
string $requestId,
|
|
string $ip,
|
|
string $uri,
|
|
string $method,
|
|
string $contentType,
|
|
int $contentLength,
|
|
string $user,
|
|
string $userAgent,
|
|
string $transferEncoding,
|
|
array $extra = []
|
|
) {
|
|
$this->requestId = $requestId;
|
|
$this->ip = $ip;
|
|
$this->uri = $uri;
|
|
$this->method = $method;
|
|
$this->contentType = $contentType;
|
|
$this->contentLength = $contentLength;
|
|
$this->user = $user;
|
|
$this->userAgent = $userAgent;
|
|
$this->transferEncoding = $transferEncoding;
|
|
$this->extra = $extra;
|
|
}
|
|
|
|
public function getRequestId(): string
|
|
{
|
|
return $this->requestId;
|
|
}
|
|
|
|
public function getIp(): string
|
|
{
|
|
return $this->ip;
|
|
}
|
|
|
|
public function getUri(): string
|
|
{
|
|
return $this->uri;
|
|
}
|
|
|
|
public function getMethod(): string
|
|
{
|
|
return $this->method;
|
|
}
|
|
|
|
public function getContentType(): string
|
|
{
|
|
return $this->contentType;
|
|
}
|
|
|
|
public function getContentLength(): int
|
|
{
|
|
return $this->contentLength;
|
|
}
|
|
|
|
public function getUser(): string
|
|
{
|
|
return $this->user;
|
|
}
|
|
|
|
public function getUserAgent(): string
|
|
{
|
|
return $this->userAgent;
|
|
}
|
|
|
|
public function getTransferEncoding(): string
|
|
{
|
|
return $this->transferEncoding;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function getExtra(): array
|
|
{
|
|
return $this->extra;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function toArray(): array
|
|
{
|
|
return [
|
|
'request_id' => $this->requestId,
|
|
'ip' => $this->ip,
|
|
'uri' => $this->uri,
|
|
'method' => $this->method,
|
|
'ctype' => $this->contentType,
|
|
'clen' => $this->contentLength,
|
|
'user' => $this->user,
|
|
'ua' => $this->userAgent,
|
|
'transfer_encoding' => $this->transferEncoding,
|
|
'extra' => $this->extra,
|
|
];
|
|
}
|
|
}
|