ok
Direktori : /home2/selectio/www/3-idiots/vendor/vonage/client-core/src/SMS/Message/ |
Current File : /home2/selectio/www/3-idiots/vendor/vonage/client-core/src/SMS/Message/OutboundMessage.php |
<?php /** * Vonage Client Library for PHP * * @copyright Copyright (c) 2016-2020 Vonage, Inc. (http://vonage.com) * @license https://github.com/Vonage/vonage-php-sdk-core/blob/master/LICENSE.txt Apache License 2.0 */ declare(strict_types=1); namespace Vonage\SMS\Message; use InvalidArgumentException; use function array_merge; use function is_null; use function strlen; abstract class OutboundMessage implements Message { /** * @var ?string */ protected $accountRef; /** * @var string */ protected $clientRef; /** * @var ?string */ protected $deliveryReceiptCallback; /** * @var string */ protected $from; /** * @var int */ protected $messageClass; /** * @var bool */ protected $requestDeliveryReceipt = true; /** * @var string */ protected $to; /** * TTL of the SMS delivery, in milliseconds * * @var int */ protected $ttl = 259200000; /** * Type of message, set by the child class * * @var string */ protected $type; public function __construct(string $to, string $from) { $this->to = $to; $this->from = $from; } abstract public function toArray(): array; public function getTtl(): int { return $this->ttl; } /** * @return $this */ public function setTtl(int $ttl): self { if ($ttl < 20000 || $ttl > 604800000) { throw new InvalidArgumentException('SMS TTL must be in the range of 20000-604800000 milliseconds'); } $this->ttl = $ttl; return $this; } public function getRequestDeliveryReceipt(): bool { return $this->requestDeliveryReceipt; } /** * @return $this */ public function setRequestDeliveryReceipt(bool $requestDeliveryReceipt): self { $this->requestDeliveryReceipt = $requestDeliveryReceipt; return $this; } public function getDeliveryReceiptCallback(): ?string { return $this->deliveryReceiptCallback; } /** * @return $this */ public function setDeliveryReceiptCallback(string $deliveryReceiptCallback): self { $this->deliveryReceiptCallback = $deliveryReceiptCallback; $this->setRequestDeliveryReceipt(true); return $this; } public function getMessageClass(): int { return $this->messageClass; } /** * @return $this */ public function setMessageClass(int $messageClass): self { if ($messageClass < 0 || $messageClass > 3) { throw new InvalidArgumentException('Message Class must be 0-3'); } $this->messageClass = $messageClass; return $this; } public function getClientRef(): string { return $this->clientRef; } /** * @return $this */ public function setClientRef(string $clientRef): self { if (strlen($clientRef) > 40) { throw new InvalidArgumentException('Client Ref can be no more than 40 characters'); } $this->clientRef = $clientRef; return $this; } /** * This adds any additional options to an individual SMS request * This allows the child classes to set their special request options, * and then filter through here for additional request options; */ protected function appendUniversalOptions(array $data): array { $data = array_merge($data, [ 'to' => $this->getTo(), 'from' => $this->getFrom(), 'type' => $this->getType(), 'ttl' => $this->getTtl(), 'status-report-req' => (int)$this->getRequestDeliveryReceipt(), ]); if ($this->getRequestDeliveryReceipt() && !is_null($this->getDeliveryReceiptCallback())) { $data['callback'] = $this->getDeliveryReceiptCallback(); } if (!is_null($this->messageClass)) { $data['message-class'] = $this->getMessageClass(); } if ($this->accountRef) { $data['account-ref'] = $this->getAccountRef(); } if ($this->clientRef) { $data['client-ref'] = $this->getClientRef(); } return $data; } public function getFrom(): string { return $this->from; } public function getTo(): string { return $this->to; } public function getAccountRef(): ?string { return $this->accountRef; } /** * @return $this */ public function setAccountRef(string $accountRef): OutboundMessage { $this->accountRef = $accountRef; return $this; } public function getType(): string { return $this->type; } public function setType(string $type): OutboundMessage { $this->type = $type; return $this; } }