PHP Classes

File: application/modules/extensions/aws/Aws/S3/PutObjectUrlMiddleware.php

Recommend this page to a friend!
  Classes of Tran Tuan   Pretty PHP S3 Files Manager   application/modules/extensions/aws/Aws/S3/PutObjectUrlMiddleware.php   Download  
File: application/modules/extensions/aws/Aws/S3/PutObjectUrlMiddleware.php
Role: Application script
Content type: text/plain
Description: Application script
Class: Pretty PHP S3 Files Manager
Web based interface to manage files in Amazon S3
Author: By
Last change:
Date: 8 years ago
Size: 1,460 bytes
 

Contents

Class file image Download
<?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;
            }
        );
    }
}