示例#1
0
        void QueueNewAnnouncement(HtmlNodeCollection repoNodes)
        {
            string title            = repoNodes["title"].InnerText;
            var    separator        = title.IndexOf('/');
            var    repoName         = title.Substring(separator + 1);
            var    author           = repoNodes["author"].ChildNodes["name"].InnerText;
            var    publishTime      = repoNodes["published"].InnerText;
            var    rawLink          = repoNodes["link"].Attributes["href"].Value;
            var    compareSeparator = rawLink.LastIndexOf('/');
            var    link             = rawLink.Substring(0, compareSeparator + 1);
            var    beginCommit      = rawLink.Substring(compareSeparator + 1, 10);
            var    endCommit        = rawLink.Substring(compareSeparator + 1 + 10 + 3, 10);
            var    timestamp        = new DateTime
                                      (
                int.Parse(publishTime.Substring(0, 4)),
                int.Parse(publishTime.Substring(5, 2)),
                int.Parse(publishTime.Substring(8, 2)),
                int.Parse(publishTime.Substring(11, 2)),
                int.Parse(publishTime.Substring(14, 2)),
                int.Parse(publishTime.Substring(17, 2))
                                      );

            var client     = new TimedWebClient();
            var commitPage = client.DownloadString(rawLink);
            var doc        = new HtmlDocument();

            doc.LoadHtml(commitPage);
            client.Dispose();

            var entry         = doc.DocumentNode.SelectNodes("//span[@class=\"num\"]");
            var rawNumCommits = entry[0].InnerText;

            rawNumCommits = new string(rawNumCommits.Where(char.IsDigit).ToArray());
            int numCommits = int.Parse(rawNumCommits);


            if (_subscribedProjects.Contains(repoName))
            {
                lock (_queuedAnnouncements){
                    _queuedAnnouncements.Add
                        (new QueuedAnnouncement
                        (
                            author,
                            link,
                            repoName,
                            timestamp,
                            beginCommit,
                            endCommit,
                            numCommits
                        )
                        );
                }
            }
        }
示例#2
0
        void RefreshRepos()
        {
            var client = new TimedWebClient();
            var rssStr = client.DownloadString(_rssUrl);

            client.Dispose();

            var rssDocument = new HtmlDocument();

            rssDocument.LoadHtml(rssStr);

            var entries = rssDocument.DocumentNode.SelectNodes("//entry");

            foreach (var entry in entries)
            {
                var childNodes = entry.ChildNodes;
                if (childNodes["id"].InnerText.Contains("PushEvent"))
                {
                    QueueNewAnnouncement(childNodes);
                }
            }
        }
示例#3
0
        void RefreshRepos()
        {
            var client = new TimedWebClient();
            var rssStr = client.DownloadString(_rssUrl);
            client.Dispose();

            var rssDocument = new HtmlDocument();
            rssDocument.LoadHtml(rssStr);

            var entries = rssDocument.DocumentNode.SelectNodes("//entry");

            foreach (var entry in entries){
                var childNodes = entry.ChildNodes;
                if (childNodes["id"].InnerText.Contains("PushEvent")){
                    QueueNewAnnouncement(childNodes);
                }
            }
        }
示例#4
0
        void QueueNewAnnouncement(HtmlNodeCollection repoNodes)
        {
            string title = repoNodes["title"].InnerText;
            var separator = title.IndexOf('/');
            var repoName = title.Substring(separator + 1);
            var author = repoNodes["author"].ChildNodes["name"].InnerText;
            var publishTime = repoNodes["published"].InnerText;
            var rawLink = repoNodes["link"].Attributes["href"].Value;
            var compareSeparator = rawLink.LastIndexOf('/');
            var link = rawLink.Substring(0, compareSeparator + 1);
            var beginCommit = rawLink.Substring(compareSeparator + 1, 10);
            var endCommit = rawLink.Substring(compareSeparator + 1 + 10 + 3, 10);
            var timestamp = new DateTime
                (
                int.Parse(publishTime.Substring(0, 4)),
                int.Parse(publishTime.Substring(5, 2)),
                int.Parse(publishTime.Substring(8, 2)),
                int.Parse(publishTime.Substring(11, 2)),
                int.Parse(publishTime.Substring(14, 2)),
                int.Parse(publishTime.Substring(17, 2))
                );

            var client = new TimedWebClient();
            var commitPage = client.DownloadString(rawLink);
            var doc = new HtmlDocument();
            doc.LoadHtml(commitPage);
            client.Dispose();

            var entry = doc.DocumentNode.SelectNodes("//span[@class=\"num\"]");
            var rawNumCommits = entry[0].InnerText;
            rawNumCommits = new string(rawNumCommits.Where(char.IsDigit).ToArray());
            int numCommits = int.Parse(rawNumCommits);

            if (_subscribedProjects.Contains(repoName)){
                lock (_queuedAnnouncements){
                    _queuedAnnouncements.Add
                        (new QueuedAnnouncement
                            (
                            author,
                            link,
                            repoName,
                            timestamp,
                            beginCommit,
                            endCommit,
                            numCommits
                            )
                        );
                }
            }
        }