| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- <?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'] = urldecode($result['Location'] ?? '');
 
-                         break;
 
-                 }
 
-                 return $result;
 
-             }
 
-         );
 
-     }
 
- }
 
 
  |