This commit is contained in:
Dennis Eichhorn 2023-09-21 02:24:44 +00:00
parent 5babc18595
commit 17756362a1
7 changed files with 117 additions and 5 deletions

View File

@ -153,9 +153,15 @@ final class CliHeader extends HeaderAbstract
*/ */
public function generate(int $code) : void public function generate(int $code) : void
{ {
switch ($code) {
default:
$this->generate500(); $this->generate500();
} }
}
/**
* {@inheritdoc}
*/
public function getRequestTime() : int public function getRequestTime() : int
{ {
return $this->timestamp; return $this->timestamp;

View File

@ -150,6 +150,13 @@ abstract class HeaderAbstract
*/ */
abstract public function has(string $key) : bool; abstract public function has(string $key) : bool;
/**
* Get time of the request
*
* @return int
*
* @since 1.0.0
*/
abstract public function getRequestTime() : int; abstract public function getRequestTime() : int;
/** /**

View File

@ -145,22 +145,47 @@ final class HttpHeader extends HeaderAbstract
return $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.1'; return $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.1';
} }
/**
* Get the referer link
*
* @return string
*
* @since 1.0.0
*/
public function getReferer() : string public function getReferer() : string
{ {
return $_SERVER['HTTP_REFERER'] ?? ''; return $_SERVER['HTTP_REFERER'] ?? '';
} }
/**
* {@inheritdoc}
*/
public function getRequestTime() : int public function getRequestTime() : int
{ {
return (int) ($_SERVER['REQUEST_TIME'] ?? $this->timestamp); return (int) ($_SERVER['REQUEST_TIME'] ?? $this->timestamp);
} }
/**
* Get the ip of the requester
*
* @return string
*
* @since 1.0.0
*/
public function getRequestIp() : string public function getRequestIp() : string
{ {
return $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? ''; return $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '';
} }
public function getBrowserName(): string { /**
* Get the browser/agent name of the request
*
* @return string
*
* @since 1.0.0
*/
public function getBrowserName(): string
{
$userAgent = $_SERVER['HTTP_USER_AGENT']; $userAgent = $_SERVER['HTTP_USER_AGENT'];
if (\strpos($userAgent, 'Opera') !== false || \strpos($userAgent, 'OPR/') !== false) { if (\strpos($userAgent, 'Opera') !== false || \strpos($userAgent, 'OPR/') !== false) {

View File

@ -27,26 +27,93 @@ use phpOMS\Localization\ISO639x1Enum;
*/ */
class ImpressionStat class ImpressionStat
{ {
/**
* Request ip
*
* @var string
* @since 1.0.0
*/
public string $address = ''; public string $address = '';
/**
* Request language
*
* @var string
* @since 1.0.0
*/
public string $language = ISO639x1Enum::_EN; public string $language = ISO639x1Enum::_EN;
/**
* Request country
*
* @var string
* @since 1.0.0
*/
public string $country = ISO3166TwoEnum::_XXX; public string $country = ISO3166TwoEnum::_XXX;
/**
* Request time
*
* @var \DateTime
* @since 1.0.0
*/
public \DateTime $datetime; public \DateTime $datetime;
/**
* Request host/domain
*
* @var string
* @since 1.0.0
*/
public string $host = ''; public string $host = '';
/**
* Request path
*
* @var string
* @since 1.0.0
*/
public string $path = ''; public string $path = '';
/**
* Request full uri
*
* @var string
* @since 1.0.0
*/
public string $uri = ''; public string $uri = '';
/**
* Request referer link
*
* @var string
* @since 1.0.0
*/
public string $referer = ''; public string $referer = '';
/**
* Request browser/agent
*
* @var string
* @since 1.0.0
*/
public string $userAgent = ''; public string $userAgent = '';
/**
* Additional custom meta data to be stored
*
* @var string
* @since 1.0.0
*/
public array $meta = []; public array $meta = [];
/**
* Constructor.
*
* @param HttpRequest $request Http request object
*
* @since 1.0.0
*/
public function __construct(HttpRequest $request) public function __construct(HttpRequest $request)
{ {
$this->language = $request->header->l11n->language; $this->language = $request->header->l11n->language;
@ -60,6 +127,13 @@ class ImpressionStat
$this->userAgent = $request->header->getBrowserName(); $this->userAgent = $request->header->getBrowserName();
} }
/**
* Turn object to array
*
* @return array
*
* @since 1.0.0
*/
public function toArray() : array public function toArray() : array
{ {
return [ return [