diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php b/vendor/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php new file mode 100644 index 0000000..8ac530e --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php @@ -0,0 +1,49 @@ +<?php +namespace Aws\Api\ErrorParser; + +use Aws\Api\Parser\JsonParser; +use Aws\Api\Service; +use Aws\CommandInterface; +use Psr\Http\Message\ResponseInterface; + +/** + * Parsers JSON-RPC errors. + */ +class JsonRpcErrorParser extends AbstractErrorParser +{ + use JsonParserTrait; + + private $parser; + + public function __construct(Service $api = null, JsonParser $parser = null) + { + parent::__construct($api); + $this->parser = $parser ?: new JsonParser(); + } + + public function __invoke( + ResponseInterface $response, + CommandInterface $command = null + ) { + $data = $this->genericHandler($response); + + // Make the casing consistent across services. + if ($data['parsed']) { + $data['parsed'] = array_change_key_case($data['parsed']); + } + + if (isset($data['parsed']['__type'])) { + if (!isset($data['code'])) { + $parts = explode('#', $data['parsed']['__type']); + $data['code'] = isset($parts[1]) ? $parts[1] : $parts[0]; + } + $data['message'] = isset($data['parsed']['message']) + ? $data['parsed']['message'] + : null; + } + + $this->populateShape($data, $response, $command); + + return $data; + } +} |