Ejemplo n.º 1
0
        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 }));
        }
Ejemplo n.º 2
0
        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));
                }
            }
        }