/** * Helper function to gather all the curl options: global, inferred, and per request * * @param Request $request * @return array */ private function prepareRequestOptions(Request $request) { // options for this entire curl object $options = $this->getOptions(); // set the request URL $options[CURLOPT_URL] = $request->getUrl(); // set the request method $options[CURLOPT_CUSTOMREQUEST] = $request->getMethod(); // posting data w/ this request? if ($request->getPostData()) { $options[CURLOPT_POST] = 1; $options[CURLOPT_POSTFIELDS] = $request->getPostData(); } // if the request has headers, use those, or if there are global headers, use those if ($request->getHeaders()) { $options[CURLOPT_HEADER] = 0; $options[CURLOPT_HTTPHEADER] = $request->getHeaders(); } elseif ($this->getHeaders()) { $options[CURLOPT_HEADER] = 0; $options[CURLOPT_HTTPHEADER] = $this->getHeaders(); } // if the request has options set, use those and have them take precedence if ($request->getOptions()) { $options = $request->getOptions() + $options; } return $options; }
/** * Get last used Proxy's data * * @param Request $request * @return bool */ public function getProxyInfo(Request $request) { // Response Info $responseInfo = $request->getResponseInfo(); $last_result = !isset($responseInfo['http_code']) ? null : $responseInfo['http_code']; $last_load_time = !isset($responseInfo['total_time']) ? null : $responseInfo['total_time']; // Request options $requestOptions = $request->options; $ip = !isset($requestOptions[10004]) ? null : $requestOptions[10004]; $data = ['last_result' => $last_result, 'last_load_time' => $last_load_time, 'error_html' => null]; // If error, save HTML if ($last_result > 200) { $data['error_html'] = $request->getResponseText(); } return true; }