PHP Classes

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

Recommend this page to a friend!
  Classes of Tran Tuan   Pretty PHP S3 Files Manager   application/modules/extensions/aws/Aws/S3/PermanentRedirectMiddleware.php   Download  
File: application/modules/extensions/aws/Aws/S3/PermanentRedirectMiddleware.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,742 bytes
 

Contents

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