Вход Регистрация
Файл: monst/Xsolla/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php
Строк: 88
<?php

namespace GuzzleServiceCommandLocationVisitorRequest;

use 
GuzzleHttpEntityBody;
use 
GuzzleHttpMessageEntityEnclosingRequestInterface;
use 
GuzzleHttpMessageRequestInterface;
use 
GuzzleHttpEntityBodyInterface;
use 
GuzzleServiceCommandCommandInterface;
use 
GuzzleServiceDescriptionParameter;

/**
 * Visitor used to apply a body to a request
 *
 * This visitor can use a data parameter of 'expect' to control the Expect header. Set the expect data parameter to
 * false to disable the expect header, or set the value to an integer so that the expect 100-continue header is only
 * added if the Content-Length of the entity body is greater than the value.
 */
class BodyVisitor extends AbstractRequestVisitor
{
    public function 
visit(CommandInterface $commandRequestInterface $requestParameter $param$value)
    {
        
$value $param->filter($value);
        
$entityBody EntityBody::factory($value);
        
$request->setBody($entityBody);
        
$this->addExpectHeader($request$entityBody$param->getData('expect_header'));
        
// Add the Content-Encoding header if one is set on the EntityBody
        
if ($encoding $entityBody->getContentEncoding()) {
            
$request->setHeader('Content-Encoding'$encoding);
        }
    }

    
/**
     * Add the appropriate expect header to a request
     *
     * @param EntityEnclosingRequestInterface $request Request to update
     * @param EntityBodyInterface             $body    Entity body of the request
     * @param string|int                      $expect  Expect header setting
     */
    
protected function addExpectHeader(EntityEnclosingRequestInterface $requestEntityBodyInterface $body$expect)
    {
        
// Allow the `expect` data parameter to be set to remove the Expect header from the request
        
if ($expect === false) {
            
$request->removeHeader('Expect');
        } elseif (
$expect !== true) {
            
// Default to using a MB as the point in which to start using the expect header
            
$expect $expect ?: 1048576;
            
// If the expect_header value is numeric then only add if the size is greater than the cutoff
            
if (is_numeric($expect) && $body->getSize()) {
                if (
$body->getSize() < $expect) {
                    
$request->removeHeader('Expect');
                } else {
                    
$request->setHeader('Expect''100-Continue');
                }
            }
        }
    }
}
Онлайн: 3
Реклама