Exemple #1
0
 public static function assignHttpContext($context, RequestInterface $request, Options $options = null)
 {
     stream_context_set_option($context, 'http', 'method', $request->getMethod());
     stream_context_set_option($context, 'http', 'protocol_version', $request->getProtocolVersion() ?: 1.1);
     // until chunked transfer encoding if fully implemented we remove the
     // header
     if ($request->hasHeader('Transfer-Encoding')) {
         $request->removeHeader('Transfer-Encoding');
     }
     // set header
     $headers = implode(Http::$newLine, ResponseParser::buildHeaderFromMessage($request));
     stream_context_set_option($context, 'http', 'header', $headers);
     // set body
     $body = $request->getBody();
     if ($body !== null && !in_array($request->getMethod(), array('HEAD', 'GET'))) {
         stream_context_set_option($context, 'http', 'content', (string) $body);
     }
     if ($options !== null) {
         // set proxy
         $proxy = $options->getProxy();
         if (!empty($proxy)) {
             stream_context_set_option($context, 'http', 'proxy', $proxy);
         }
         // set follow location
         stream_context_set_option($context, 'http', 'follow_location', (int) $options->getFollowLocation());
         stream_context_set_option($context, 'http', 'max_redirects', $options->getMaxRedirects());
         // set timeout
         $timeout = $options->getTimeout();
         if (!empty($timeout)) {
             stream_context_set_option($context, 'http', 'timeout', $timeout);
         }
     }
 }