コード例 #1
0
        private void Checker_LinkToProcess(object?sender, LinkModificationEventArgs e)
        {
            switch (e.Modification)
            {
            case LinkModification.MarkInvalid:
                this.SourceValue = LinkChecker.MarkInvalid(this.SourceValue, e.LinkHref);
                break;

            case LinkModification.UpdateSchema:
                this.SourceValue = LinkChecker.UpdateHref(this.SourceValue, e.LinkHref, e.NewHref);
                break;
            }
        }
コード例 #2
0
        private void UpdateSource(object sender, RoutedEventArgs e)
        {
            int count = 0;

            var html = CleanerSettings.Instance.HtmlSource;

            // process any checked link, but "invalid" beats "update".
            foreach (var lnk in this.Links.Where(l => l.SelectForUpdate || l.SelectForInvalidMark))
            {
                if (lnk.SelectForInvalidMark)
                {
                    MarkError(lnk);
                }
                else if (lnk.SelectForUpdate && !string.IsNullOrEmpty(lnk.LinkAfterRedirect))
                {
                    UpdateUrl(lnk);
                }

                lnk.SelectForInvalidMark = false;
                lnk.SelectForUpdate      = false;
            }

            this.MessageLabel.Text = $"{count} link(s) updated.";
            CleanerSettings.Instance.HtmlSource = html;

            void MarkError(BindableLinkDescription link)
            {
                html        = LinkChecker.MarkInvalid(html, link.OriginalLink);
                link.Result = LinkCheckSummary.Updated;
                count++;
            }

            void UpdateUrl(BindableLinkDescription link)
            {
                html        = LinkChecker.UpdateHref(html, link.OriginalLink, link.LinkAfterRedirect);
                link.Result = LinkCheckSummary.Updated;
                count++;
            }
        }