![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/medad.corals.io/vendor/kreait/firebase-php/src/Firebase/Messaging/ |
<?php declare(strict_types=1); namespace Kreait\Firebase\Messaging; use JsonSerializable; use Kreait\Firebase\Util\DT; /** * @see https://developers.google.com/instance-id/reference/server#results */ final class AppInstance implements JsonSerializable { private RegistrationToken $registrationToken; /** @var array<string, mixed> */ private array $rawData; private TopicSubscriptions $topicSubscriptions; /** * @param array<string, mixed> $rawData */ private function __construct(RegistrationToken $registrationToken, TopicSubscriptions $topicSubscriptions, array $rawData) { $this->registrationToken = $registrationToken; $this->topicSubscriptions = $topicSubscriptions; $this->rawData = $rawData; } /** * @internal * * @param array<string, mixed> $rawData */ public static function fromRawData(RegistrationToken $registrationToken, array $rawData): self { $subscriptions = []; foreach ($rawData['rel']['topics'] ?? [] as $topicName => $subscriptionInfo) { $topic = Topic::fromValue((string) $topicName); $addedAt = DT::toUTCDateTimeImmutable($subscriptionInfo['addDate'] ?? null); $subscriptions[] = new TopicSubscription($topic, $registrationToken, $addedAt); } return new self($registrationToken, new TopicSubscriptions(...$subscriptions), $rawData); } public function registrationToken(): RegistrationToken { return $this->registrationToken; } public function topicSubscriptions(): TopicSubscriptions { return $this->topicSubscriptions; } /** * @param Topic|string $topic */ public function isSubscribedToTopic($topic): bool { $topic = $topic instanceof Topic ? $topic : Topic::fromValue($topic); return $this->topicSubscriptions ->filter(static fn (TopicSubscription $subscription) => $topic->value() === $subscription->topic()->value()) ->count() > 0; } /** * @return array<string, mixed> */ public function rawData(): array { return $this->rawData; } /** * @return array<string, mixed> */ public function jsonSerialize(): array { return $this->rawData; } }