You are here

protected function AcquiaSearchService::prepareRequest in Acquia Connector 7.3

Same name and namespace in other branches
  1. 7 acquia_search/Acquia_Search_Service.php \AcquiaSearchService::prepareRequest()
  2. 7.2 acquia_search/Acquia_Search_Service.php \AcquiaSearchService::prepareRequest()

Modify the url and add headers appropriate to authenticate Acquia Search.

Return value

mixed The nonce used in the request.

3 calls to AcquiaSearchService::prepareRequest()
AcquiaSearchService::makeServletRequest in acquia_search/Acquia_Search_Service.php
Make a request to a servlet (a path) that's not a standard path.
AcquiaSearchService::_sendRawGet in acquia_search/Acquia_Search_Service.php
Central method for making a GET operation against this Solr Server
AcquiaSearchService::_sendRawPost in acquia_search/Acquia_Search_Service.php
Central method for making a POST operation against this Solr Server

File

acquia_search/Acquia_Search_Service.php, line 17

Class

AcquiaSearchService
Starting point for the Solr API.

Code

protected function prepareRequest(&$url, &$options, $use_data = TRUE) {

  // Add a unique request ID to the URL.
  $id = uniqid();
  if (!stristr($url, '?')) {
    $url .= "?";
  }
  else {
    $url .= "&";
  }
  $url .= 'request_id=' . $id;

  // If we're hosted on Acquia, and have an Acquia request ID, append it to
  // the request so that we map Solr queries to Acquia search requests.
  if (isset($_ENV['HTTP_X_REQUEST_ID'])) {
    $xid = empty($_ENV['HTTP_X_REQUEST_ID']) ? '-' : $_ENV['HTTP_X_REQUEST_ID'];
    $url .= '&x-request-id=' . rawurlencode($xid);
  }
  if ($use_data && isset($options['data'])) {
    list($cookie, $nonce) = acquia_search_auth_cookie($url, $options['data'], NULL, $this->env_id);
  }
  else {
    list($cookie, $nonce) = acquia_search_auth_cookie($url, NULL, NULL, $this->env_id);
  }
  if (empty($cookie)) {
    throw new Exception('Invalid authentication string - subscription keys expired or missing.');
  }
  $options['headers']['Cookie'] = $cookie;
  $options['headers'] += array(
    'User-Agent' => 'acquia_search/' . variable_get('acquia_search_version', '7.x'),
  );
  $options['context'] = acquia_agent_stream_context_create($url, 'acquia_search');
  if (!$options['context']) {
    throw new Exception(t("Could not create stream context"));
  }
  return $nonce;
}