summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php b/vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php
new file mode 100644
index 0000000..8faba41
--- /dev/null
+++ b/vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php
@@ -0,0 +1,59 @@
+<?php
+namespace Aws\S3;
+
+use Aws\CommandInterface;
+use Aws\ResultInterface;
+use Psr\Http\Message\RequestInterface;
+
+/**
+ * Injects ObjectURL into the result of the PutObject operation.
+ *
+ * @internal
+ */
+class PutObjectUrlMiddleware
+{
+ /** @var callable */
+ private $nextHandler;
+
+ /**
+ * Create a middleware wrapper function.
+ *
+ * @return callable
+ */
+ public static function wrap()
+ {
+ return function (callable $handler) {
+ return new self($handler);
+ };
+ }
+
+ /**
+ * @param callable $nextHandler Next handler to invoke.
+ */
+ public function __construct(callable $nextHandler)
+ {
+ $this->nextHandler = $nextHandler;
+ }
+
+ public function __invoke(CommandInterface $command, RequestInterface $request = null)
+ {
+ $next = $this->nextHandler;
+ return $next($command, $request)->then(
+ function (ResultInterface $result) use ($command) {
+ $name = $command->getName();
+ switch ($name) {
+ case 'PutObject':
+ case 'CopyObject':
+ $result['ObjectURL'] = isset($result['@metadata']['effectiveUri'])
+ ? $result['@metadata']['effectiveUri']
+ : null;
+ break;
+ case 'CompleteMultipartUpload':
+ $result['ObjectURL'] = $result['Location'];
+ break;
+ }
+ return $result;
+ }
+ );
+ }
+}