summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php
diff options
context:
space:
mode:
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.php49
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;
+ }
+}