<?php

declare(strict_types=1);

namespace PhpWA\Exception;

/**
 * WhatsApp подтвердил получение stanza, но отклонил именно исходящее сообщение.
 * Причина ограничена коротким кодом ACK: в исключение не попадают текст,
 * адресат, ключи или любые данные переписки.
 */
final class OutgoingMessageRejectedException extends ProtocolException
{
    /** @var string */ private $reason;

    public function __construct(string $reason)
    {
        $reason = strtolower(trim($reason));
        if (preg_match('/\A[a-z0-9._-]{1,64}\z/D', $reason) !== 1) {
            $reason = 'unknown';
        }
        $this->reason = $reason;
        parent::__construct('WhatsApp rejected an outgoing message stanza: ' . $reason . '.');
    }

    public function reason(): string
    {
        return $this->reason;
    }
}
