public bool CheckIfStoryExists(StoryRecord story) { bool result = false; SqlConnection con = null; try { con = new SqlConnection(System.Environment.GetEnvironmentVariable("NewsConnectionString", EnvironmentVariableTarget.Process)); con.Open(); using (var db = new Database(con)) { List <StoryRecord> results = db.Fetch <StoryRecord>($"where Url=N'{story.Url}'"); if (results != null && results.Count > 0) { result = true; } } } catch (Exception ex) { System.Diagnostics.Trace.TraceError("NosyRepo error in GetProviders. " + ex.ToString()); } finally { if (con != null) { con.Close(); } } return(result); }
public void InsertStory(StoryRecord story) { SqlConnection con = null; try { con = new SqlConnection(System.Environment.GetEnvironmentVariable("NewsConnectionString", EnvironmentVariableTarget.Process)); con.Open(); using (var db = new Database(con)) { db.Insert(story); } } catch (Exception ex) { System.Diagnostics.Trace.TraceError("NosyRepo error in InsertStory. " + ex.ToString()); } finally { if (con != null) { con.Close(); } } }
public static List <StoryRecord> GetRSSUpdates(ProviderRecord provider) { List <StoryRecord> results = new List <StoryRecord>(); try { using (HttpClient client = new HttpClient()) { string rssContent = client.GetStringAsync(provider.RssUrl).Result; if (!String.IsNullOrEmpty(rssContent)) { XDocument doc = XDocument.Parse(rssContent); string newUpdate = GetPublishDate(doc.Element("rss").Element("channel")); DateTime newUpdateTime = DateTime.Parse(newUpdate); //DateTime lastUpdateTime = DateTime.Parse(provider.LastUpdate); if (newUpdateTime > provider.LastUpdated) { //provider.LastUpdated = newUpdateTime; IEnumerable <XElement> items = doc.Descendants("item"); foreach (XElement item in items) { StoryRecord newsItem = new StoryRecord { Title = item.Element("title").Value, Description = item.Element("description").Value, Language = provider.Language, Url = item.Element("link").Value, ImageUrl = NosyBot.Services.Utilities.RssUtilities.GetImageUrl(item), ProviderId = provider.Id, ProviderName = provider.Name, LastUpdated = DateTime.Now, PublishDate = DateTime.Parse(item.Element("pubDate").Value) }; if (newsItem.PublishDate > provider.LastPublished) { // This came in after the last update, so add results.Add(newsItem); } } provider.LastPublished = newUpdateTime; provider.LastUpdated = DateTime.Now; } } } } catch (Exception ex) { Console.WriteLine($"Error processing provider {provider.Name}, error: {ex.Message}"); } return(results); }