public SynItems FilterItems(SynItems items, List <string> tags)
        {
            SynItems result = new SynItems();

            for (int i = 0; i < items.Summaries.Count; i++)
            {
                if (tags.Any())
                {
                    foreach (string t in tags)
                    {
                        if (items.Summaries[i].ToUpper().Contains(t.ToUpper()))
                        {
                            result.Summaries.Add(items.Summaries[i]);
                            result.Links.Add(items.Links[i]);
                            result.Titles.Add(items.Titles[i]);

                            break;
                        }
                    }
                }
                else
                {
                    result.Summaries.Add(items.Summaries[i]);
                    result.Links.Add(items.Links[i]);
                    result.Titles.Add(items.Titles[i]);
                }
            }
            return(result);
        }
Exemple #2
0
        public SynItems LoadFeed(string url)
        {
            SynItems result = new SynItems();

            try
            {
                XmlReader       reader = XmlReader.Create(url);
                SyndicationFeed feed   = SyndicationFeed.Load(reader);
                reader.Close();
                result.Summaries = feed.Items.Select(item => (item.Summary?.Text) ?? "").ToList();
                result.Titles    = feed.Items.Select(item => item.Title.Text).ToList();
                result.Links     = feed.Items.Select(item => item.Links[0].Uri.ToString()).ToList();
            }
            catch { }
            return(result);
        }
        static void Main(string[] args)
        {
            List <string> urls       = new List <string>();
            List <string> recipients = new List <string>();
            List <string> tags       = new List <string>();

            urls.Add("https://www.ibm.com/developerworks/views/global/rss/libraryview.jsp");
            recipients.Add("*****@*****.**");
            tags.Add("development");
            ControlClient controlClient = new ControlClient();

            Console.ReadLine();

            SynItems items = controlClient.ProcessFeeds(urls.ToArray(), tags.ToArray(), recipients.ToArray());

            Console.ReadLine();
        }
Exemple #4
0
        public void SendMail(SynItems items, List <string> recipients)
        {
            try
            {
                string message = message = string.Join(string.Empty,
                                                       items.Links.Zip(items.Titles, (first, second) => "<a href=\"" + first + "\">" + second + "</a><br>"));

                string subject  = "Selected RSS feed at " + DateTime.Now;
                string sender   = "*****@*****.**";
                string password = "******";
                foreach (var recipient in recipients)
                {
                    Send(sender, password, recipient, message, subject);
                }
            }
            catch { }
        }
Exemple #5
0
 private void ReadFilterSendThreadMain()
 {
     if (ListBoxFeeds.Items.Count > 0)
     {
         tags.Clear();
         tags = TextBoxTags.Text.Split(' ').ToList();
         Links.Clear();
         ControlClient client = new ControlClient();
         SynItems      items  = client.ProcessFeeds(ListBoxFeeds.Items.Cast <string>().ToArray(), tags.ToArray(), ListBoxRecipients.Items.Cast <string>().ToArray());
         client.Close();
         ListBoxFeedItems.Invoke(new Action(() => ListBoxFeedItems.Items.Clear()));
         ListBoxFeedItems.Invoke(new Action(() => ListBoxFeedItems.Items.AddRange(items.Titles.ToArray())));
         Links.AddRange(items.Links);
         MainTimer.Stop();
         MainTimer.Interval = (double)(1000 * 60 * (NumericUpDownMinutes.Value + NumericUpDownHours.Value * 60 + NumericUpDownDays.Value * 60 * 24));
         MainTimer.Start();
         ActiveForm?.Invoke(new Action(() => ActiveForm.Text = "Mail sent at " + DateTime.Now));
     }
 }
Exemple #6
0
        public SynItems ProcessFeeds(List <string> feedurls, List <string> tags, List <string> recipients)
        {
            SynItems filtereditems = new SynItems();
            //try
            //{
            LoadClient loadClient = new LoadClient(new WSHttpBinding()
            {
                MaxReceivedMessageSize = 2000000000, MaxBufferPoolSize = 2000000000
            },
                                                   new EndpointAddress("http://localhost:8733/LoadService/"));
            FilterClient filterClient = new FilterClient(new WSHttpBinding()
            {
                MaxReceivedMessageSize = 2000000000, MaxBufferPoolSize = 2000000000
            },
                                                         new EndpointAddress("http://localhost:8733/FilterService/"));
            MailClient mailClient = new MailClient(new WSHttpBinding()
            {
                MaxReceivedMessageSize = 2000000000, MaxBufferPoolSize = 2000000000
            },
                                                   new EndpointAddress("http://localhost:8733/MailService/"));

            foreach (string feedurl in feedurls)
            {
                SynItems items = loadClient.LoadFeed(feedurl);
                items = filterClient.FilterItems(items, tags.ToArray());
                filtereditems.Summaries.AddRange(items.Summaries);
                filtereditems.Links.AddRange(items.Links);
                filtereditems.Titles.AddRange(items.Titles);
            }
            mailClient.SendMail(filtereditems, recipients.ToArray());
            //}
            //catch(Exception ex)
            //{
            //}
            return(filtereditems);
        }