public async Task <PurgeResponse> Purge(int id, bool descendants = false) { var content = UmbracoContext.Content.GetById(id); if (content == null) { throw new HttpException(404, $"Content {id} not found"); } if (descendants) { var descendents = GetDescendents(content); return(await _cdnService.PurgeAsync(descendents)); } return(await _cdnService.PurgeAsync(new[] { content })); }
private void PurgeCache(EventMessages messages, IEnumerable <int> contentIds) { using (var context = _umbracoContextFactory.EnsureUmbracoContext()) { var content = contentIds.Select(context.UmbracoContext.Content.GetById); try { var result = Task.Run(() => _contentCdnService.PurgeAsync(content)).GetAwaiter().GetResult(); if (result.Result == Models.PurgeResult.Success) { messages.Add(new EventMessage("CloudPurge", "Cleared CDN cache", EventMessageType.Success)); } else if (result.Result == Models.PurgeResult.Fail) { _logger.Error <CloudPurgeComposer>("Failed to purge cache for {FailedUrlCount} urls ((failedUrls}). With messages {failMessages}", result.FailedUrls.Count(), result.FailedUrls, result.FailMessages); messages.Add(new EventMessage("CloudPurge", "Something went wrong clearing CDN cache", EventMessageType.Warning)); foreach (var failMessage in result.FailMessages.Take(5)) { messages.Add(new EventMessage("CloudPurge", failMessage, EventMessageType.Error)); } } } catch (TimeoutException) { messages.Add(new EventMessage("CloudPurge", "Looks like it's taking a little while to clear the CDN cache...", EventMessageType.Warning)); } catch (Exception ex) { _logger.Error <CloudPurgeComposer>("Failed to purge cache", ex); messages.Add(new EventMessage("CloudPurge", "Something went wrong clearing CDN cache", EventMessageType.Error)); } } }