You are here

public function Search::search in Google Search Appliance 8

Performs search.

Parameters

\Drupal\google_appliance\SearchResults\SearchQuery $query: Search query.

Return value

\Drupal\google_appliance\SearchResults\ResultSet Search result set.

Overrides SearchInterface::search

1 method overrides Search::search()
TestSearch::search in tests/modules/google_appliance_test/src/TestSearch.php
Performs search.

File

src/Service/Search.php, line 75

Class

Search
Defines a search connector to GSA.

Namespace

Drupal\google_appliance\Service

Code

public function search(SearchQuery $query) {
  $config = $this->configFactory
    ->get('google_appliance.settings');
  $resultsPerPage = (int) $config
    ->get('display_settings.results_per_page');
  $params = [
    'site' => Html::escape($config
      ->get('connection_info.collection')),
    'oe' => 'utf8',
    'ie' => 'utf8',
    'getfields' => '*',
    'client' => Html::escape($config
      ->get('connection_info.frontend')),
    'start' => $query
      ->getPage() * $resultsPerPage,
    'num' => Html::escape($config
      ->get('display_settings.results_per_page')),
    'filter' => Html::escape($config
      ->get('query_param.autofilter')),
    'q' => $query
      ->getSearchQuery(),
    'output' => 'xml_no_dtd',
    'sort' => $query
      ->getSort(),
    'access' => 'p',
  ];
  $this->moduleHandler
    ->alter('google_appliance_query', $params);
  try {
    $response = $this->httpClient
      ->request('GET', $config
      ->get('connection_info.hostname') . '/search', [
      'query' => $params,
    ]);
    $return = $this->parser
      ->parseResponse((string) $response
      ->getBody());
  } catch (GuzzleException $e) {
    $return = (new ResultSet())
      ->addError($e
      ->getMessage(), ResultSet::ERROR_HTTP);
  }
  $this->moduleHandler
    ->alter('google_appliance_response', $return);
  return $return
    ->setSearchTitle($config
    ->get('display_settings.search_title'))
    ->setQuery($query)
    ->setResultsPerPage($resultsPerPage);
}