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;
        }
Exemple #5
0
        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);
        }