Вход Регистрация
Файл: includes/library/aws/Aws/Api/Parser/Crc32ValidatingParser.php
Строк: 44
<?php
namespace AwsApiParser;

use 
AwsCommandInterface;
use 
AwsExceptionAwsException;
use 
PsrHttpMessageResponseInterface;
use 
GuzzleHttpPsr7;

/**
 * @internal Decorates a parser and validates the x-amz-crc32 header.
 */
class Crc32ValidatingParser extends AbstractParser
{
    
/** @var callable */
    
private $parser;

    
/**
     * @param callable $parser Parser to wrap.
     */
    
public function __construct(callable $parser)
    {
        
$this->parser $parser;
    }

    public function 
__invoke(
        
CommandInterface $command,
        
ResponseInterface $response
    
) {
        if (
$expected $response->getHeaderLine('x-amz-crc32')) {
            
$hash hexdec(Psr7hash($response->getBody(), 'crc32b'));
            if ((int) 
$expected !== $hash) {
                throw new 
AwsException(
                    
"crc32 mismatch. Expected {$expected}, found {$hash}.",
                    
$command,
                    [
                        
'code'             => 'ClientChecksumMismatch',
                        
'connection_error' => true,
                        
'response'         => $response
                    
]
                );
            }
        }

        
$fn $this->parser;
        return 
$fn($command$response);
    }
}
Онлайн: 0
Реклама