| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | <?phpnamespace Qcloud\Cos\Exception;use Psr\Http\Message\RequestInterface;use Psr\Http\Message\ResponseInterface;class ServiceResponseException extends \RuntimeException {    /**     * @var Response Response     */    protected $response;    /**     * @var RequestInterface Request     */    protected $request;    /**     * @var string Request ID     */    protected $requestId;    /**     * @var string Exception type (client / server)     */    protected $exceptionType;    /**     * @var string Exception code     */    protected $exceptionCode;    /**     * Set the exception code     *     * @param string $code Exception code     */    public function setExceptionCode($code) {        $this->exceptionCode = $code;    }    /**     * Get the exception code     *     * @return string|null     */    public function getExceptionCode() {        return $this->exceptionCode;    }    /**     * Set the exception type     *     * @param string $type Exception type     */    public function setExceptionType($type) {        $this->exceptionType = $type;    }    /**     * Get the exception type (one of client or server)     *     * @return string|null     */    public function getExceptionType() {        return $this->exceptionType;    }    /**     * Set the request ID     *     * @param string $id Request ID     */    public function setRequestId($id) {        $this->requestId = $id;    }    /**     * Get the Request ID     *     * @return string|null     */    public function getRequestId() {        return $this->requestId;    }    /**     * Set the associated response     *     * @param Response $response Response     */    public function setResponse(ResponseInterface $response) {        $this->response = $response;    }    /**     * Get the associated response object     *     * @return Response|null     */    public function getResponse() {        return $this->response;    }    /**     * Set the associated request     *     * @param RequestInterface $request     */    public function setRequest(RequestInterface $request) {        $this->request = $request;    }    /**     * Get the associated request object     *     * @return RequestInterface|null     */    public function getRequest() {        return $this->request;    }    /**     * Get the status code of the response     *     * @return int|null     */    public function getStatusCode() {        return $this->response ? $this->response->getStatusCode() : null;    }    /**     * Cast to a string     *     * @return string     */    public function __toString() {        $message = get_class($this) . ': '            . 'Cos Error Code: ' . $this->getExceptionCode() . ', '            . 'Status Code: ' . $this->getStatusCode() . ', '            . 'Cos Request ID: ' . $this->getRequestId() . ', '            . 'Cos Error Type: ' . $this->getExceptionType() . ', '            . 'Cos Error Message: ' . $this->getMessage();        // Add the User-Agent if available        if ($this->request) {            $message .= ', ' . 'User-Agent: ' . $this->request->getHeader('User-Agent')[0];        }        return $message;    }    /**     * Get the request ID of the error. This value is only present if a     * response was received, and is not present in the event of a networking     * error.     *     * Same as `getRequestId()` method, but matches the interface for SDKv3.     *     * @return string|null Returns null if no response was received     */    public function getCosRequestId() {        return $this->requestId;    }    /**     * Get the Cos error type.     *     * Same as `getExceptionType()` method, but matches the interface for SDKv3.     *     * @return string|null Returns null if no response was received     */    public function getCosErrorType() {        return $this->exceptionType;    }    /**     * Get the Cos error code.     *     * Same as `getExceptionCode()` method, but matches the interface for SDKv3.     *     * @return string|null Returns null if no response was received     */    public function getCosErrorCode() {        return $this->exceptionCode;    }}
 |