<?php
namespace App\Dto\Authorization;
use Symfony\Component\HttpFoundation\Request;
class AuthorizationHeaderDto
{
private string $language;
private string $name;
private string $provider;
private int $timestamp;
private string $token;
private string $versionNumber;
public function __construct(
string $language,
string $name,
string $provider,
int $timestamp,
string $versionNumber,
string $token
)
{
$this->language = $language;
$this->name = $name;
$this->provider = $provider;
$this->timestamp = $timestamp;
$this->token = $token;
$this->versionNumber = $versionNumber;
}
/**
* @param string $language
* @param string $name
* @param string $provider
* @param int $timestamp
* @param string $versionNumber
* @param string $token
* @return static
*/
public static function generateFromStrings(
string $language,
string $name,
string $provider,
int $timestamp,
string $versionNumber,
string $token
): self
{
return new self(
$language,
$name,
$provider,
$timestamp,
$token,
$versionNumber
);
}
/**
* @param Request $request
* @return static
*/
public static function generateFromRequest(
Request $request
): self
{
$headers = $request->headers;
return new self(
$headers->get("App-Language"),
$headers->get("App-Name"),
$headers->get("App-Provider"),
$headers->get("App-Timestamp"),
$headers->get("App-Version"),
$headers->get("X-Bearer-Token")
);
}
/**
* @return string
*/
public function getLanguage(): string
{
return substr($this->language, 0, 2); // fr_FR => fr
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @return string
*/
public function getProvider(): string
{
return $this->provider;
}
/**
* @return int
*/
public function getTimestamp(): int
{
return $this->timestamp;
}
/**
* @return string
*/
public function getToken(): string
{
return $this->token;
}
/**
* @return string
*/
public function getVersionNumber(): string
{
return $this->versionNumber;
}
}