/** * Returns a Request from specified stream context and path. * * If an existing Request is given, the stream context options * are set on the specified Request object. * * @param resource $context Stream context resource. * @param string $path Path to use as url. * @param Request $existing Optional, existing request. * * @return Request */ public static function createRequestFromStreamContext($context, $path, Request $existing = null) { $http = self::getHttpOptionsFromContext($context); $request = $existing; if (empty($request)) { $method = !empty($http['method']) ? $http['method'] : 'GET'; $request = new Request($method, $path, array()); } if (!empty($http['header'])) { $headers = HttpUtil::parseHeaders(HttpUtil::parseRawHeader($http['header'])); foreach ($headers as $key => $value) { $request->setHeader($key, $value); } } if (!empty($http['content'])) { $request->setBody($http['content']); } if (!empty($http['user_agent'])) { $request->setHeader('User-Agent', $http['user_agent']); } if (isset($http['follow_location'])) { $request->setCurlOption(CURLOPT_FOLLOWLOCATION, (bool) $http['follow_location']); } if (isset($http['max_redirects'])) { $request->setCurlOption(CURLOPT_MAXREDIRS, $http['max_redirects']); } if (isset($http['timeout'])) { $request->setCurlOption(CURLOPT_TIMEOUT, $http['timeout']); } // TODO: protocol_version return $request; }