12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?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);
- }
- }
|