You are here

public function AcquiaSearchApiClient::getSearchIndexes in Acquia Search 3.x

Helper function to fetch all search v3 indexes for given subscription.

Parameters

string $id: Acquia Subscription Identifier.

Return value

array|bool Acquia Search indexes array, FALSE on Acquia Search API failure.

File

src/AcquiaSearchApiClient.php, line 75

Class

AcquiaSearchApiClient
Acquia implementation of the Search API Client.

Namespace

Drupal\acquia_search

Code

public function getSearchIndexes(string $id) {
  if (empty($id)) {
    return FALSE;
  }
  $cid = 'acquia_search.indexes.' . $id;
  $now = \Drupal::time()
    ->getRequestTime();
  if (($cache = $this->cache
    ->get($cid)) && $cache->expire > $now) {
    return $cache->data;
  }
  $path = '/v2/index/configure';
  $query_string = 'network_id=' . $id;
  $result = [];
  $indexes = $this
    ->searchRequest($path, $query_string);
  if (empty($indexes) && !is_array($indexes)) {

    // When API is not reachable, cache it for 1 minute.
    $this->cache
      ->set($cid, FALSE, \Drupal::time()
      ->getRequestTime() + 60);
    return FALSE;
  }
  foreach ($indexes as $index) {
    $result[$index['key']] = [
      'balancer' => $index['host'],
      'core_id' => $index['key'],
      'data' => $index,
    ];
  }

  // Cache will be set in both cases, 1. when search v3 cores are found and
  // 2. when there are no search v3 cores but api is reachable.
  $this->cache
    ->set($cid, $result, $now + 24 * 60 * 60);
  return $result;
}