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/S3/RetryableMalformedResponseParser.php |
initial
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php b/vendor/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php new file mode 100644 index 0000000..cbf75d3 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php @@ -0,0 +1,56 @@ +<?php +namespace Aws\S3; + +use Aws\Api\Parser\AbstractParser; +use Aws\Api\StructureShape; +use Aws\Api\Parser\Exception\ParserException; +use Aws\CommandInterface; +use Aws\Exception\AwsException; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\StreamInterface; + +/** + * Converts malformed responses to a retryable error type. + * + * @internal + */ +class RetryableMalformedResponseParser extends AbstractParser +{ + /** @var string */ + private $exceptionClass; + + public function __construct( + callable $parser, + $exceptionClass = AwsException::class + ) { + $this->parser = $parser; + $this->exceptionClass = $exceptionClass; + } + + public function __invoke( + CommandInterface $command, + ResponseInterface $response + ) { + $fn = $this->parser; + + try { + return $fn($command, $response); + } catch (ParserException $e) { + throw new $this->exceptionClass( + "Error parsing response for {$command->getName()}:" + . " AWS parsing error: {$e->getMessage()}", + $command, + ['connection_error' => true, 'exception' => $e], + $e + ); + } + } + + public function parseMemberFromStream( + StreamInterface $stream, + StructureShape $member, + $response + ) { + return $this->parser->parseMemberFromStream($stream, $member, $response); + } +} |