<?php

namespace Kylin\Sms\Exceptions;

/**
 * 网关异常
 * 
 * 当短信网关发送请求失败时抛出此异常
 * 包含网关名称、错误消息、错误代码和上下文信息
 * 用于区分不同网关的错误，便于问题定位和处理
 * 
 * @package Kylin\Sms\Exceptions
 */
class GatewayException extends SmsException
{
    /**
     * 网关名称
     * 
     * 标识产生异常的短信网关，如 aliyun、tencent 等
     * 
     * @var string
     */
    protected string $gateway;

    /**
     * 构造函数
     * 
     * 创建网关异常实例
     * 
     * @param string $gateway 产生异常的网关名称
     * @param string $message 异常消息，默认为空字符串
     * @param int $code 错误代码，默认为 500
     * @param array $context 异常上下文信息，默认为空数组
     */
    public function __construct(string $gateway, string $message = '', int $code = 500, array $context = [])
    {
        $this->gateway = $gateway;
        parent::__construct($message, $code, $context);
    }

    /**
     * 获取网关名称
     * 
     * 返回产生异常的短信网关标识
     * 
     * @return string 网关名称
     */
    public function getGateway(): string
    {
        return $this->gateway;
    }
}
