Seditio Source
Root |
./othercms/dle15_0/upload/engine/classes/composer/vendor/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php
<?php
namespace Aws\S3;

use
Aws\CommandInterface;
use
Aws\ResultInterface;
use
Aws\S3\Exception\PermanentRedirectException;
use
Psr\Http\Message\RequestInterface;

/**
 * Throws a PermanentRedirectException exception when a 301 redirect is
 * encountered.
 *
 * @internal
 */
class PermanentRedirectMiddleware
{
   
/** @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) {
               
$status = isset($result['@metadata']['statusCode'])
                    ?
$result['@metadata']['statusCode']
                    :
null;
                if (
$status == 301) {
                    throw new
PermanentRedirectException(
                       
'Encountered a permanent redirect while requesting '
                       
. $result->search('"@metadata".effectiveUri') . '. '
                       
. 'Are you sure you are using the correct region for '
                       
. 'this bucket?',
                       
$command,
                        [
'result' => $result]
                    );
                }
                return
$result;
            }
        );
    }
}