diff options
author | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
commit | 0c8af4992cb0f7589dcafaad65ada12753c64594 (patch) | |
tree | 18e83d068c3e7dd2499331de977782b382279396 /vendor/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php |
initial
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php b/vendor/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php new file mode 100644 index 0000000..2f7ba81 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php @@ -0,0 +1,58 @@ +<?php +namespace Aws\Api\ErrorParser; + +use Aws\Api\Parser\JsonParser; +use Aws\Api\Service; +use Aws\Api\StructureShape; +use Aws\CommandInterface; +use Psr\Http\Message\ResponseInterface; + +/** + * Parses JSON-REST errors. + */ +class RestJsonErrorParser 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); + + // Merge in error data from the JSON body + if ($json = $data['parsed']) { + $data = array_replace($data, $json); + } + + // Correct error type from services like Amazon Glacier + if (!empty($data['type'])) { + $data['type'] = strtolower($data['type']); + } + + // Retrieve the error code from services like Amazon Elastic Transcoder + if ($code = $response->getHeaderLine('x-amzn-errortype')) { + $colon = strpos($code, ':'); + $data['code'] = $colon ? substr($code, 0, $colon) : $code; + } + + // Retrieve error message directly + $data['message'] = isset($data['parsed']['message']) + ? $data['parsed']['message'] + : (isset($data['parsed']['Message']) + ? $data['parsed']['Message'] + : null); + + $this->populateShape($data, $response, $command); + + return $data; + } +} |