private void getContribsWorker() { string url = getApiUrl(); HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(url); hwrq.UserAgent = userAgent; HttpWebResponse resp = (HttpWebResponse)hwrq.GetResponse(); Stream response = resp.GetResponseStream(); XPathDocument xpd = new XPathDocument(response); XPathNavigator xpnav = xpd.CreateNavigator(); XPathNodeIterator xni = xpnav.Select("//usercontribs/item"); List <int> revisions = new List <int>(500); revisions.AddRange(from XPathNavigator nav in xni select int.Parse(nav.GetAttribute("revid", ""))); XPathNodeIterator xpni = xpnav.Select("//query-continue/usercontribs"); xpni.MoveNext(); uccontinue = xpni.Current.GetAttribute("ucstart", ""); foreach (int r in revisions) { Contribution c = Contribution.NewFromId(r); addContribToGui(c); } }
private void addContribToGui(Contribution c) { if (this.InvokeRequired) { contribDelegate dlgt = addContribToGui; this.BeginInvoke(dlgt, c); } else { flowLayoutPanel1.Controls.Add(c); } }
private void addContribToGui(Contribution c) { if(this.InvokeRequired) { contribDelegate dlgt = addContribToGui; this.BeginInvoke(dlgt, c); } else { flowLayoutPanel1.Controls.Add(c); } }
internal static Contribution NewFromId(int r) { string url = "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=revisions&rvdiffto=prev&revids=" + r; Contribution c = new Contribution(); HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(url); hwrq.UserAgent = Form1.userAgent; HttpWebResponse resp = (HttpWebResponse)hwrq.GetResponse(); XPathDocument xpd = new XPathDocument(resp.GetResponseStream()); XPathNavigator xpn = xpd.CreateNavigator(); c.revid = r; XPathNodeIterator xpni; xpni = xpn.Select("//page"); xpni.MoveNext(); XPathNavigator page = xpni.Current; xpni = xpn.Select("//rev"); xpni.MoveNext(); XPathNavigator rev = xpni.Current; xpni = xpn.Select("//diff"); xpni.MoveNext(); XPathNavigator diff = xpni.Current; c.title = c.labelTitle.Text = page.GetAttribute("title", ""); c.user = rev.GetAttribute("user", ""); c.comment = rev.GetAttribute("comment", ""); c.diff = diff.Value; c.timestamp = DateTime.Parse(rev.GetAttribute("timestamp", "")); c.labelDate.Text = c.timestamp.ToString("yyyy/MM/dd hh:mm:ss"); c.pagenamespace = int.Parse(page.GetAttribute("ns", "")); switch (c.pagenamespace) { case 0: c.labelColour.BackColor = Color.FromArgb(255, 255, 255); break; case 1: c.labelColour.BackColor = Color.FromArgb(232, 232, 232); break; case 2: c.labelColour.BackColor = Color.FromArgb(255, 0, 0); break; case 3: c.labelColour.BackColor = Color.FromArgb(130, 0, 0); break; case 4: c.labelColour.BackColor = Color.FromArgb(255, 255, 0); break; case 5: c.labelColour.BackColor = Color.FromArgb(171, 171, 0); break; case 6: c.labelColour.BackColor = Color.FromArgb(0, 255, 0); break; case 7: c.labelColour.BackColor = Color.FromArgb(0, 157, 0); break; case 8: c.labelColour.BackColor = Color.FromArgb(255, 0, 255); break; case 9: c.labelColour.BackColor = Color.FromArgb(144, 0, 144); break; case 10: c.labelColour.BackColor = Color.FromArgb(0, 0, 255); break; case 11: c.labelColour.BackColor = Color.FromArgb(0, 0, 117); break; case 12: c.labelColour.BackColor = Color.FromArgb(0, 255, 255); break; case 13: c.labelColour.BackColor = Color.FromArgb(0, 155, 155); break; case 14: c.labelColour.BackColor = Color.FromArgb(149, 149, 149); break; case 15: c.labelColour.BackColor = Color.FromArgb(106, 106, 106); break; case 100: c.labelColour.BackColor = Color.FromArgb(255, 102, 0); break; case 101: c.labelColour.BackColor = Color.FromArgb(155, 62, 0); break; case 108: c.labelColour.BackColor = Color.FromArgb(80, 45, 22); break; case 109: c.labelColour.BackColor = Color.FromArgb(40, 23, 11); break; default: c.labelColour.BackColor = Color.Transparent; break; } return c; }
internal static Contribution NewFromId(int r) { string url = "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=revisions&rvdiffto=prev&revids=" + r; Contribution c = new Contribution(); HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(url); hwrq.UserAgent = Form1.userAgent; HttpWebResponse resp = (HttpWebResponse)hwrq.GetResponse(); XPathDocument xpd = new XPathDocument(resp.GetResponseStream()); XPathNavigator xpn = xpd.CreateNavigator(); c.revid = r; XPathNodeIterator xpni; xpni = xpn.Select("//page"); xpni.MoveNext(); XPathNavigator page = xpni.Current; xpni = xpn.Select("//rev"); xpni.MoveNext(); XPathNavigator rev = xpni.Current; xpni = xpn.Select("//diff"); xpni.MoveNext(); XPathNavigator diff = xpni.Current; c.title = c.labelTitle.Text = page.GetAttribute("title", ""); c.user = rev.GetAttribute("user", ""); c.comment = rev.GetAttribute("comment", ""); c.diff = diff.Value; c.timestamp = DateTime.Parse(rev.GetAttribute("timestamp", "")); c.labelDate.Text = c.timestamp.ToString("yyyy/MM/dd hh:mm:ss"); c.pagenamespace = int.Parse(page.GetAttribute("ns", "")); switch (c.pagenamespace) { case 0: c.labelColour.BackColor = Color.FromArgb(255, 255, 255); break; case 1: c.labelColour.BackColor = Color.FromArgb(232, 232, 232); break; case 2: c.labelColour.BackColor = Color.FromArgb(255, 0, 0); break; case 3: c.labelColour.BackColor = Color.FromArgb(130, 0, 0); break; case 4: c.labelColour.BackColor = Color.FromArgb(255, 255, 0); break; case 5: c.labelColour.BackColor = Color.FromArgb(171, 171, 0); break; case 6: c.labelColour.BackColor = Color.FromArgb(0, 255, 0); break; case 7: c.labelColour.BackColor = Color.FromArgb(0, 157, 0); break; case 8: c.labelColour.BackColor = Color.FromArgb(255, 0, 255); break; case 9: c.labelColour.BackColor = Color.FromArgb(144, 0, 144); break; case 10: c.labelColour.BackColor = Color.FromArgb(0, 0, 255); break; case 11: c.labelColour.BackColor = Color.FromArgb(0, 0, 117); break; case 12: c.labelColour.BackColor = Color.FromArgb(0, 255, 255); break; case 13: c.labelColour.BackColor = Color.FromArgb(0, 155, 155); break; case 14: c.labelColour.BackColor = Color.FromArgb(149, 149, 149); break; case 15: c.labelColour.BackColor = Color.FromArgb(106, 106, 106); break; case 100: c.labelColour.BackColor = Color.FromArgb(255, 102, 0); break; case 101: c.labelColour.BackColor = Color.FromArgb(155, 62, 0); break; case 108: c.labelColour.BackColor = Color.FromArgb(80, 45, 22); break; case 109: c.labelColour.BackColor = Color.FromArgb(40, 23, 11); break; default: c.labelColour.BackColor = Color.Transparent; break; } return(c); }
//flag private void toolStripButton3_Click(object sender, EventArgs e) { flowLayoutPanel2.Controls.Add(currentContribution); currentContribution = (Contribution)flowLayoutPanel1.Controls[0]; flowLayoutPanel1.Controls.Remove(currentContribution); splitContainer1.Panel2.Controls.Clear(); webBrowser1 = new WebBrowser(); webBrowser1.Dock = DockStyle.Fill; webBrowser1.DocumentText = Properties.Resources.wikihtml + currentContribution.GetDiff() + "</table></body></html>"; splitContainer1.Panel2.Controls.Add(webBrowser1); }