private void revisionButton_Click(object sender, EventArgs e) { WikiAPI api = new WikiAPI(); int revId; if (Int32.TryParse(revisionText.Text, out revId)) { revisionList.DataSource = api.GetRevisions(titleText.Text, revId); } else { revisionList.DataSource = api.GetRevisions(titleText.Text); } revisionList.DisplayMember = "RevId"; }
private void checkAndUpdateWikiPage(PageReadData data) { // First check revID WikiAPI api = new WikiAPI(); var revIDs = api.GetRevisions(data.WikiPage, data.LastRevision).OrderBy(x => x.RevId).ToList(); if (revIDs.Count <= 1) { // No newer revID return; } var currentRevID = revIDs.Last().RevId; if (data.LastRevision == -1) { // First check send email sendEmail(data); refreshDatabase(data, true, currentRevID); return; } string currentPageContent = api.GetContent(data.WikiPage, currentRevID); string prevPageContent = api.GetContent(data.WikiPage, data.LastRevision); MatchCollection words1 = Regex.Matches(currentPageContent, @"\b(\w+)\b"); MatchCollection words2 = Regex.Matches(prevPageContent, @"\b(\w+)\b"); var hs1 = new HashSet <string>(words1.Cast <Match>().Select(m => m.Value)); var hs2 = new HashSet <string>(words2.Cast <Match>().Select(m => m.Value)); var hs1_mod = new HashSet <string>(hs1); var hs2_mod = new HashSet <string>(hs2); hs2_mod.ExceptWith(hs1); int prevVersionExtraWordCounter = hs2_mod.Count; hs1_mod.ExceptWith(hs2); int newVersionExtraWordCounter = hs1_mod.Count; // Calculate diff, if bigger then sensititvity, then send email if (newVersionExtraWordCounter + prevVersionExtraWordCounter > data.Sensitivity) { sendEmail(data); refreshDatabase(data, true, currentRevID); } else { refreshDatabase(data); } }