示例#1
0
 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());
 }
示例#2
0
 /**
  * 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;
 }
示例#3
0
 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');
     }
 }