You are here

public function FastlyPurger::invalidateUrls in Fastly 8.3

Invalidate a set of urls.

Parameters

\Drupal\purge\Plugin\Purge\Invalidation\InvalidationInterface[] $invalidations: The invalidator instance.

Throws

\Exception

File

modules/fastlypurger/src/Plugin/Purge/Purger/FastlyPurger.php, line 122

Class

FastlyPurger
Fastly purger.

Namespace

Drupal\fastlypurger\Plugin\Purge\Purger

Code

public function invalidateUrls(array $invalidations) {
  $urls = [];

  // Set all invalidation states to PROCESSING before kick off purging.

  /* @var \Drupal\purge\Plugin\Purge\Invalidation\InvalidationInterface $invalidation */
  foreach ($invalidations as $invalidation) {
    $invalidation
      ->setState(InvalidationInterface::PROCESSING);
    $urls[] = $invalidation
      ->getExpression();
  }
  if (empty($urls)) {
    foreach ($invalidations as $invalidation) {
      $invalidation
        ->setState(InvalidationInterface::FAILED);
      throw new \Exception('No url found to purge');
    }
  }

  // Fastly only allows purging of a single URL per request.
  $urls_each = array_chunk($urls, 1);
  foreach ($urls_each as $url) {

    // Invalidate and update the item state.
    $invalidation_state = $this
      ->invalidateItems('urls', $url);
  }
  $this
    ->updateState($invalidations, $invalidation_state);
}