use function array_key_exists;
use Safe\DateTimeImmutable;
use function Safe\json_decode;
class Subscription implements SubscriptionInterface
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
private string $endpoint;
* @ORM\Column(type="array")
private array $keys = [];
* @ORM\Column(type="array")
private array $supportedContentEncodings = ['aesgcm'];
* @ORM\Column(type="integer", nullable=true)
private ?int $expirationTime = null;
public function __construct(string $endpoint)
$this->endpoint = $endpoint;
* @param string[] $contentEncodings
public function setContentEncodings(array $contentEncodings): self
$this->supportedContentEncodings = $contentEncodings;
public function getKeys(): array
public function hasKey(string $key): bool
return isset($this->keys[$key]);
* @return array<string, string>
public function getKey(string $key): string
Assertion::keyExists($this->keys, $key, 'The key does not exist');
return $this->keys[$key];
public function setKeys(array $keys): self
public function getExpirationTime(): ?int
return $this->expirationTime;
public function setExpirationTime(?int $expirationTime): self
$this->expirationTime = $expirationTime;
public function getEndpoint(): string
public function getSupportedContentEncodings(): array
return $this->supportedContentEncodings;
* @return array<string, string|string[]>
public function jsonSerialize(): array
'endpoint' => $this->endpoint,
'supportedContentEncodings' => $this->supportedContentEncodings,