Viewing file: MetadataTOCPayload.php (3.57 KB) -rwxr-x--- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
declare(strict_types=1);
/* * The MIT License (MIT) * * Copyright (c) 2014-2021 Spomky-Labs * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file for details. */
namespace Webauthn\MetadataService;
use function array_key_exists; use Assert\Assertion; use JsonSerializable; use function Safe\sprintf;
class MetadataTOCPayload implements JsonSerializable { /** * @var string|null */ private $legalHeader;
/** * @var int */ private $no;
/** * @var string */ private $nextUpdate;
/** * @var MetadataTOCPayloadEntry[] */ private $entries = [];
/** * @var string[] */ private $rootCertificates;
public function __construct(int $no, string $nextUpdate, ?string $legalHeader = null) { $this->no = $no; $this->nextUpdate = $nextUpdate; $this->legalHeader = $legalHeader; }
public function addEntry(MetadataTOCPayloadEntry $entry): self { $this->entries[] = $entry;
return $this; }
public function getLegalHeader(): ?string { return $this->legalHeader; }
public function getNo(): int { return $this->no; }
public function getNextUpdate(): string { return $this->nextUpdate; }
/** * @return MetadataTOCPayloadEntry[] */ public function getEntries(): array { return $this->entries; }
public static function createFromArray(array $data): self { $data = Utils::filterNullValues($data); foreach (['no', 'nextUpdate', 'entries'] as $key) { Assertion::keyExists($data, $key, Utils::logicException(sprintf('Invalid data. The parameter "%s" is missing', $key))); } Assertion::integer($data['no'], Utils::logicException('Invalid data. The parameter "no" shall be an integer')); Assertion::string($data['nextUpdate'], Utils::logicException('Invalid data. The parameter "nextUpdate" shall be a string')); Assertion::isArray($data['entries'], Utils::logicException('Invalid data. The parameter "entries" shall be a n array of entries')); if (array_key_exists('legalHeader', $data)) { Assertion::string($data['legalHeader'], Utils::logicException('Invalid data. The parameter "legalHeader" shall be a string')); } $object = new self( $data['no'], $data['nextUpdate'], $data['legalHeader'] ?? null ); foreach ($data['entries'] as $k => $entry) { $object->addEntry(MetadataTOCPayloadEntry::createFromArray($entry)); } $object->rootCertificates = $data['rootCertificates'] ?? [];
return $object; }
public function jsonSerialize(): array { $data = [ 'legalHeader' => $this->legalHeader, 'nextUpdate' => $this->nextUpdate, 'no' => $this->no, 'entries' => array_map(static function (MetadataTOCPayloadEntry $object): array { return $object->jsonSerialize(); }, $this->entries), 'rootCertificates' => $this->rootCertificates, ];
return Utils::filterNullValues($data); }
/** * @return string[] */ public function getRootCertificates(): array { return $this->rootCertificates; }
/** * @param string[] $rootCertificates */ public function setRootCertificates(array $rootCertificates): self { $this->rootCertificates = $rootCertificates;
return $this; } }
|