Вход Регистрация
Файл: sngine-v2.8/Script/includes/libs/AWS/Aws/S3/ApplyChecksumMiddleware.php
Строк: 71
<?php
namespace AwsS3;

use 
AwsApiApiProvider;
use 
AwsApiService;
use 
AwsCommandInterface;
use 
GuzzleHttpPsr7;
use 
PsrHttpMessageRequestInterface;

/**
 * Apply required or optional MD5s to requests before sending.
 *
 * IMPORTANT: This middleware must be added after the "build" step.
 *
 * @internal
 */
class ApplyChecksumMiddleware
{
    private static 
$sha256 = [
        
'PutObject',
        
'UploadPart',
    ];

    
/** @var Service */
    
private $api;

    private 
$nextHandler;

    
/**
     * Create a middleware wrapper function.
     *
     * @param Service $api
     * @return callable
     */
    
public static function wrap(Service $api)
    {
        return function (callable 
$handler) use ($api) {
            return new 
self($handler$api);
        };
    }

    public function 
__construct(callable $nextHandlerService $api)
    {
        
$this->api $api;
        
$this->nextHandler $nextHandler;
    }

    public function 
__invoke(
        
CommandInterface $command,
        
RequestInterface $request
    
) {
        
$next $this->nextHandler;
        
$name $command->getName();
        
$body $request->getBody();

        
$op $this->api->getOperation($command->getName());

        if (!empty(
$op['httpChecksumRequired']) && !$request->hasHeader('Content-MD5')) {
            
// Set the content MD5 header for operations that require it.
            
$request $request->withHeader(
                
'Content-MD5',
                
base64_encode(Psr7hash($body'md5'true))
            );
        } elseif (
in_array($nameself::$sha256) && $command['ContentSHA256']) {
            
// Set the content hash header if provided in the parameters.
            
$request $request->withHeader(
                
'X-Amz-Content-Sha256',
                
$command['ContentSHA256']
            );
        }

        return 
$next($command$request);
    }
}
Онлайн: 0
Реклама