uuid = $data['uuid']; $this->channelUuid = $data['channel_uuid']; $this->recipient = CommunicationRecipientType::from($data['recipient']); $this->message = $data['message']; $this->signature = $data['signature']; $this->received = (bool)$data['received']; if($data['timestamp'] instanceof DateTime) { $this->timestamp = $data['timestamp']->getTimestamp(); } elseif(is_int($data['timestamp'])) { $this->timestamp = $data['timestamp']; } elseif(is_string($data['timestamp'])) { $this->timestamp = strtotime($data['timestamp']) ?: throw new InvalidArgumentException('Invalid date format'); } else { throw new InvalidArgumentException('Invalid date format, got type: ' . gettype($data['timestamp'])); } } /** * The Unique Universal Identifier of the message. * * @return string The UUID of the message. */ public function getUuid(): string { return $this->uuid; } /** * The Unique Universal Identifier of the channel. * * @return string The UUID of the channel. */ public function getChannelUuid(): string { return $this->channelUuid; } /** * The recipient of the message. * * @return CommunicationRecipientType The recipient of the message. */ public function getRecipient(): CommunicationRecipientType { return $this->recipient; } /** * The encrypted message. * * @return string The message. */ public function getMessage(): string { return $this->message; } /** * The signature of the decrypted message. * * @return string The signature of the message. */ public function getSignature(): string { return $this->signature; } /** * Whether the message has been received. * * @return bool Whether the message has been received. */ public function isReceived(): bool { return $this->received; } /** * The timestamp of the message. * * @return int The timestamp of the message. */ public function getTimestamp(): int { return $this->timestamp; } /** * @inheritDoc */ public static function fromArray(array $data): EncryptionChannelMessage { return new self($data); } /** * @inheritDoc */ public function toArray(): array { return [ 'uuid' => $this->uuid, 'channel_uuid' => $this->channelUuid, 'recipient' => $this->recipient->value, 'message' => $this->message, 'signature' => $this->signature, 'received' => $this->received, 'timestamp' => $this->timestamp ]; } }