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); }
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(); }
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 { } }
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)); } }
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); }