You are here

private function PrepareBodyMiddleware::addExpectHeader in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php \GuzzleHttp\PrepareBodyMiddleware::addExpectHeader()
1 call to PrepareBodyMiddleware::addExpectHeader()
PrepareBodyMiddleware::__invoke in vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php

File

vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php, line 75

Class

PrepareBodyMiddleware
Prepares requests that contain a body, adding the Content-Length, Content-Type, and Expect headers.

Namespace

GuzzleHttp

Code

private function addExpectHeader(RequestInterface $request, array $options, array &$modify) {

  // Determine if the Expect header should be used
  if ($request
    ->hasHeader('Expect')) {
    return;
  }
  $expect = isset($options['expect']) ? $options['expect'] : null;

  // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
  if ($expect === false || $request
    ->getProtocolVersion() < 1.1) {
    return;
  }

  // The expect header is unconditionally enabled
  if ($expect === true) {
    $modify['set_headers']['Expect'] = '100-Continue';
    return;
  }

  // By default, send the expect header when the payload is > 1mb
  if ($expect === null) {
    $expect = 1048576;
  }

  // Always add if the body cannot be rewound, the size cannot be
  // determined, or the size is greater than the cutoff threshold
  $body = $request
    ->getBody();
  $size = $body
    ->getSize();
  if ($size === null || $size >= (int) $expect || !$body
    ->isSeekable()) {
    $modify['set_headers']['Expect'] = '100-Continue';
  }
}