| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?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'] = $result['@metadata']['effectiveUri'];
- break;
- case 'CompleteMultipartUpload':
- $result['ObjectURL'] = $result['Location'];
- break;
- }
- return $result;
- }
- );
- }
- }
|