/**
  * 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 $request, EntityBodyInterface $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');
             }
         }
     }
 }
Exemple #2
0
 /**
  * Set the size that the entity body of the request must exceed before adding the Expect: 100-Continue header.
  *
  * @param int|bool $size Cutoff in bytes. Set to false to never send the expect header (even with non-seekable data)
  *
  * @return self
  */
 public function setExpectHeaderCutoff($size)
 {
     $this->expectCutoff = $size;
     if ($size === false || !$this->body) {
         $this->removeHeader('Expect');
     } elseif ($this->body && $this->body->getSize() && $this->body->getSize() > $size) {
         $this->setHeader('Expect', '100-Continue');
     }
     return $this;
 }
Exemple #3
0
 /**
  * Create a cache key for a response's body
  *
  * @param string              $url  URL of the entry
  * @param EntityBodyInterface $body Response body
  *
  * @return string
  */
 protected function getBodyKey($url, EntityBodyInterface $body)
 {
     return $this->keyPrefix . md5($url) . $body->getContentMd5();
 }