diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php b/vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php new file mode 100644 index 0000000..94aee69 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php @@ -0,0 +1,49 @@ +<?php +namespace Aws\S3; + +use Aws\Api\Parser\AbstractParser; +use Aws\Api\StructureShape; +use Aws\CommandInterface; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\StreamInterface; + +/** + * @internal Decorates a parser for the S3 service to correctly handle the + * GetBucketLocation operation. + */ +class GetBucketLocationParser extends AbstractParser +{ + /** + * @param callable $parser Parser to wrap. + */ + public function __construct(callable $parser) + { + $this->parser = $parser; + } + + public function __invoke( + CommandInterface $command, + ResponseInterface $response + ) { + $fn = $this->parser; + $result = $fn($command, $response); + + if ($command->getName() === 'GetBucketLocation') { + $location = 'us-east-1'; + if (preg_match('/>(.+?)<\/LocationConstraint>/', $response->getBody(), $matches)) { + $location = $matches[1] === 'EU' ? 'eu-west-1' : $matches[1]; + } + $result['LocationConstraint'] = $location; + } + + return $result; + } + + public function parseMemberFromStream( + StreamInterface $stream, + StructureShape $member, + $response + ) { + return $this->parser->parseMemberFromStream($stream, $member, $response); + } +} |