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\PurgerCode
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);
}