summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2022-11-23 21:14:33 +0300
committerAndrew Dolgov <[email protected]>2022-11-23 21:14:33 +0300
commit0c8af4992cb0f7589dcafaad65ada12753c64594 (patch)
tree18e83d068c3e7dd2499331de977782b382279396 /vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php
initial
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php49
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);
+ }
+}