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