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; } }
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++; } }