private function addExpectHeader(puzzle_message_RequestInterface $request, puzzle_stream_StreamInterface $body) { // Determine if the Expect header should be used if ($request->hasHeader('Expect')) { return; } $expect = $request->getConfig(); $expect = $expect['expect']; // Return if disabled or if you're not using HTTP/1.1 if ($expect === false || $request->getProtocolVersion() !== '1.1') { return; } // The expect header is unconditionally enabled if ($expect === true) { $request->setHeader('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 $size = $body->getSize(); if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { $request->setHeader('Expect', '100-Continue'); } }
/** * Applies request headers to a request based on the POST state * * @param puzzle_message_RequestInterface $request Request to update */ public function applyRequestHeaders(puzzle_message_RequestInterface $request) { if ($this->files || $this->forceMultipart) { $request->setHeader('Content-Type', 'multipart/form-data; boundary=' . $this->getBody()->getBoundary()); } elseif ($this->fields) { $request->setHeader('Content-Type', 'application/x-www-form-urlencoded'); } if ($size = $this->getSize()) { $request->setHeader('Content-Length', $size); } }
/** * Factory method to create a new exception with a normalized error message * * @param puzzle_message_RequestInterface $request Request * @param puzzle_message_ResponseInterface $response Response received * @param Exception $previous Previous exception * * @return self */ public static function create(puzzle_message_RequestInterface $request, puzzle_message_ResponseInterface $response = null, Exception $previous = null) { if (!$response) { return new self('Error completing request', $request, null, $previous); } $statusCode = $response->getStatusCode(); $level = $statusCode[0]; if ($level == '4') { $label = 'Client error response'; $className = 'puzzle_exception_ClientException'; } elseif ($level == '5') { $label = 'Server error response'; $className = 'puzzle_exception_ServerException'; } else { $label = 'Unsuccessful response'; $className = __CLASS__; } $message = $label . ' [url] ' . $request->getUrl() . ' [status code] ' . $response->getStatusCode() . ' [reason phrase] ' . $response->getReasonPhrase(); return new $className($message, $request, $response, $previous); }
private function add_decode_content(puzzle_message_RequestInterface $request, $value) { if ($value === false) { return; } if ($value !== true) { $request->setHeader('Accept-Encoding', $value); } $config = $request->getConfig(); $config['decode_content'] = true; }
/** * Set the appropriate URL on the request based on the location header * * @param puzzle_message_RequestInterface $redirectRequest * @param puzzle_message_ResponseInterface $response */ private function setRedirectUrl(puzzle_message_RequestInterface $redirectRequest, puzzle_message_ResponseInterface $response) { $location = $response->getHeader('Location'); $location = puzzle_Url::fromString($location); // Combine location with the original URL if it is not absolute. if (!$location->isAbsolute()) { $originalUrl = puzzle_Url::fromString($redirectRequest->getUrl()); // Remove query string parameters and just take what is present on // the redirect Location header $originalUrl->getQuery()->clear(); $location = $originalUrl->combine($location); } $redirectRequest->setUrl($location); }
private function add_decode_content(puzzle_message_RequestInterface $request, puzzle_adapter_curl_RequestMediator $mediator, $value) { if (!$request->hasHeader('Accept-Encoding')) { $this->_closure_handleOptions[CURLOPT_ENCODING] = ''; // Don't let curl send the header over the wire $this->_closure_handleOptions[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; } else { $this->_closure_handleOptions[CURLOPT_ENCODING] = $request->getHeader('Accept-Encoding'); } }
private function createStreamResource(puzzle_message_RequestInterface $request, array $options, $context, &$http_response_header) { $this->_closure_createStreamResource_url = $request->getUrl(); $this->_closure_createStreamResource_context = $context; return $this->createResource(array($this, '__callback_createStreamResource'), $request, $options); }
public function addCookieHeader(puzzle_message_RequestInterface $request) { $values = array(); $scheme = $request->getScheme(); $host = $request->getHost(); $path = $request->getPath(); foreach ($this->cookies as $cookie) { if ($cookie->matchesPath($path) && $cookie->matchesDomain($host) && !$cookie->isExpired() && (!$cookie->getSecure() || $scheme == 'https')) { $values[] = $cookie->getName() . '=' . self::getCookieValue($cookie->getValue()); } } if ($values) { $request->setHeader('Cookie', implode(';', $values)); } }
/** * {@inheritdoc} */ public function setMethod($method) { $this->_delegate->setMethod($method); return $this; }
private function emit(puzzle_message_RequestInterface $request) { $event = new puzzle_event_BeforeEvent(new puzzle_adapter_Transaction(new puzzle_Client(), $request)); $request->getEmitter()->emit('before', $event); }