public function testDetach() { $request = new HTTP_Request2(); $observer = new HTTP_Request2_MockObserver(); $observer2 = new HTTP_Request2_MockObserver(); $request->attach($observer); $request->detach($observer2); // should not be a error $request->setLastEvent('first'); $request->detach($observer); $request->setLastEvent('second'); $this->assertEquals(1, $observer->calls); $this->assertEquals(array('name' => 'first', 'data' => null), $observer->event); }
/** * Sends request to the remote server and returns its response * * @param HTTP_Request2 * @return HTTP_Request2_Response * @throws HTTP_Request2_Exception */ public function sendRequest(HTTP_Request2 $request) { if (!extension_loaded('curl')) { throw new HTTP_Request2_LogicException('cURL extension not available', HTTP_Request2_Exception::MISCONFIGURATION); } $this->request = $request; $this->response = null; $this->position = 0; $this->eventSentHeaders = false; $this->eventReceivedHeaders = false; try { if (false === curl_exec($ch = $this->createCurlHandle())) { $e = self::wrapCurlError($ch); } } catch (Exception $e) { } if (isset($ch)) { $this->lastInfo = curl_getinfo($ch); curl_close($ch); } $response = $this->response; unset($this->request, $this->requestBody, $this->response); if (!empty($e)) { throw $e; } if ($jar = $request->getCookieJar()) { $jar->addCookiesFromResponse($response, $request->getUrl()); } if (0 < $this->lastInfo['size_download']) { $request->setLastEvent('receivedBody', $response); } return $response; }
/** * Sends request to the remote server and returns its response * * @param HTTP_Request2 * @return HTTP_Request2_Response * @throws HTTP_Request2_Exception */ public function sendRequest(HTTP_Request2 $request) { if (!extension_loaded('curl')) { throw new HTTP_Request2_Exception('cURL extension not available'); } $this->request = $request; $this->response = null; $this->position = 0; $this->eventSentHeaders = false; $this->eventReceivedHeaders = false; try { if (false === curl_exec($ch = $this->createCurlHandle())) { $errorMessage = 'Error sending request: #' . curl_errno($ch) . ' ' . curl_error($ch); } } catch (Exception $e) { } $this->lastInfo = curl_getinfo($ch); curl_close($ch); $response = $this->response; unset($this->request, $this->requestBody, $this->response); if (!empty($e)) { throw $e; } elseif (!empty($errorMessage)) { throw new HTTP_Request2_Exception($errorMessage); } if (0 < $this->lastInfo['size_download']) { $request->setLastEvent('receivedBody', $response); } return $response; }