public function testAddHeader() { $headers = array('User-Agent: My Agent'); $this->_request->setHeaders($headers); $this->_request->addHeader('Cache-Control: no-cache'); $headers[] = 'Cache-Control: no-cache'; $this->assertEquals($headers, $this->_request->getHeaders()); }
/** * Create a stream context for a request * * @param Solarium_Client_Request $request * @return resource */ public function createContext($request) { $method = $request->getMethod(); $context = stream_context_create(array('http' => array('method' => $method, 'timeout' => $this->getTimeout()))); if ($method == Solarium_Client_Request::METHOD_POST) { $data = $request->getRawData(); if (null !== $data) { stream_context_set_option($context, 'http', 'content', $data); $request->addHeader('Content-Type: text/xml; charset=UTF-8'); } } $headers = $request->getHeaders(); if (count($headers) > 0) { stream_context_set_option($context, 'http', 'header', implode("\r\n", $headers)); } return $context; }
public function testCreateContextWithHeaders() { $timeout = 13; $method = Solarium_Client_Request::METHOD_HEAD; $header1 = 'Content-Type: text/xml; charset=UTF-8'; $header2 = 'X-MyHeader: dummyvalue'; $request = new Solarium_Client_Request(); $request->setMethod($method); $request->addHeader($header1); $request->addHeader($header2); $this->_adapter->setTimeout($timeout); $context = $this->_adapter->createContext($request); $this->assertEquals(array('http' => array('method' => $method, 'timeout' => $timeout, 'header' => $header1 . "\r\n" . $header2)), stream_context_get_options($context)); }
/** * Event hook to customize the request object * * @param Solarium_Query $query * @param Solarium_Client_Request $request * @return void */ public function postCreateRequest($query, $request) { foreach ($this->getCustomizations() as $key => $customization) { // first validate if (!$customization->isValid()) { throw new Solarium_Exception('Request customization with key "' . $key . '" is invalid'); } // apply to request, depending on type switch ($customization->getType()) { case Solarium_Plugin_CustomizeRequest_Customization::TYPE_PARAM: $request->addParam($customization->getName(), $customization->getValue(), $customization->getOverwrite()); break; case Solarium_Plugin_CustomizeRequest_Customization::TYPE_HEADER: $request->addHeader($customization->getName() . ': ' . $customization->getValue()); break; } // remove single-use customizations after use if (!$customization->getPersistent()) { $this->removeCustomization($key); } } }
/** * Event hook to adjust client settings just before query execution * * @param Solarium_Query $query * @param Solarium_Client_Request $request * @return void */ public function postCreateRequest($query, $request) { $queryString = $request->getQueryString(); if ($request->getMethod() == Solarium_Client_Request::METHOD_GET && strlen($queryString) > $this->getMaxQueryStringLength()) { $request->setMethod(Solarium_Client_Request::METHOD_POST); $request->setRawData($queryString); $request->clearParams(); $request->addHeader('Content-Type: application/x-www-form-urlencoded'); } }