Viewing file: ApiErrorHandler.php (1.73 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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;
use Vonage\Client\Exception\Request as RequestException; use Vonage\Client\Exception\Server as ServerException; use Vonage\Client\Exception\Validation as ValidationException;
class ApiErrorHandler { /** * @param string|int $statusCode * * @throws RequestException * @throws ServerException * @throws ValidationException */ public static function check(array $body, $statusCode): void { $statusCodeType = (int)($statusCode / 100);
// If it's ok, we can continue if ($statusCodeType === 2) { return; }
// Build up our error message $errorMessage = $body['title'];
if (isset($body['detail']) && $body['detail']) { $errorMessage .= ': ' . $body['detail'] . '.'; } else { $errorMessage .= '.'; }
$errorMessage .= ' See ' . $body['type'] . ' for more information';
// If it's a 5xx error, throw an exception if ($statusCodeType === 5) { throw new ServerException($errorMessage, $statusCode); }
// Otherwise it's a 4xx, so we may have more context for the user // If it's a validation error, share that information if (isset($body['invalid_parameters'])) { throw new ValidationException($errorMessage, $statusCode, null, $body['invalid_parameters']); }
// Otherwise throw a normal error throw new RequestException($errorMessage, $statusCode); } }
|