diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php | 59 |
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; + } + ); + } +} |