コード例 #1
0
 public ExtendedContentModelMapper(IUrlResolver urlResolver, IContentModelMapper defaultContentModelMapper, ServiceAccessor <HttpContextBase> httpContextAccessor, IContentVersionRepository versionRepository)
 {
     _urlResolver = urlResolver;
     _defaultContentModelMapper = defaultContentModelMapper;
     _httpContextAccessor       = httpContextAccessor;
     _versionRepository         = versionRepository;
 }
コード例 #2
0
        public static WebhookExecutionResponse Execute(this Webhook webhook, IContent content, EventType eventType, IWebhookRepository repo, Dictionary <string, object> extraData = null)
        {
            var res = new WebhookExecutionResponse {
                Response = string.Empty, Success = false
            };

            try
            {
                IContentModelMapper mapper = _contentModelMapperFactory.Value.GetMapper(content);
                var refs         = _contentRepository.Value.GetReferencesToContent(content.ContentLink, eventType.ImpactsDescendants);
                var payload      = new WebhookDetailedPayload(content, eventType.Key, DateTime.UtcNow);
                var referencedBy = new List <ContentInfo>();
                referencedBy.AddRange(refs.Select(x => new ContentInfo(_contentRepository.Value.Get <IContent>(x.OwnerID, x.OwnerLanguage))));
                if (eventType.ImpactsDescendants)
                {
                    var descendents = _contentRepository.Value.GetDescendents(content.ContentLink);
                    foreach (var descendent in descendents.Take(_maxDescendents))
                    {
                        if (!referencedBy.Any(x => x.ContentId.Equals(descendent.ID)))
                        {
                            referencedBy.Add(new ContentInfo(_contentRepository.Value.Get <IContent>(descendent)));
                        }
                    }
                }
                payload.ReferencedBy = referencedBy.GroupBy(x => x.ContentId).Select(x => x.FirstOrDefault());
                payload.Content      = mapper.TransformContent(content, false, "*");
                payload.ExtraData    = extraData;

                var url          = repo.ReplacePlaceholders(webhook.Url);
                var uri          = new Uri(url);
                var servicePoint = ServicePointManager.FindServicePoint(uri);
                servicePoint.Expect100Continue = false;
                using (var wc = new WebClient())
                {
                    wc.Encoding = Encoding.UTF8;
                    foreach (var header in webhook.Headers ?? new Dictionary <string, string>())
                    {
                        wc.Headers.Add(repo.ReplacePlaceholders(header.Key), repo.ReplacePlaceholders(header.Value));
                    }
                    wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                    var response = wc.UploadString(url, "POST", JsonConvert.SerializeObject(payload));
                    res.Response = response;
                    res.Success  = true;
                }
                webhook.LastResult = $"OK\n{res.Response}";
            }
            catch (WebException ex)
            {
                res.Response       = $"{ex?.Message ?? string.Empty}\n\n{ex?.StackTrace ?? string.Empty}";
                webhook.LastResult = $"ERROR ({ex.Status})\n\n{ex?.Message ?? string.Empty}\n\n{ex?.StackTrace ?? string.Empty}";
            }
            catch (Exception ex)
            {
                res.Response       = $"{ex?.Message ?? string.Empty}\n\n{ex?.StackTrace ?? string.Empty}";
                webhook.LastResult = $"ERROR\n\n{ex?.Message ?? string.Empty}\n\n{ex?.StackTrace ?? string.Empty}";
            }
            webhook.LastExecuted = DateTime.UtcNow;
            repo.SaveWebhook(webhook);
            return(res);
        }
コード例 #3
0
 public BlockModelMapper(
     IContentRepository contentRepository,
     IContentModelMapper contentModelMapper,
     IContentTypeRepository contentTypeRepository)
 {
     this.contentRepository     = contentRepository;
     this.contentModelMapper    = contentModelMapper;
     this.contentTypeRepository = contentTypeRepository;
 }
コード例 #4
0
 public BulkUpdateController(IContentModelMapper contentModelMapper,
                             IContentTypeRepository contentTypeRepository,
                             IContentRepository contentRepository,
                             ILanguageBranchRepository languageBranchRepository,
                             IContentLoader contentLoader)
 {
     _contentModelMapper       = contentModelMapper;
     _contentTypeRepository    = contentTypeRepository;
     _contentRepository        = contentRepository;
     _languageBranchRepository = languageBranchRepository;
     _contentLoader            = contentLoader;
 }