Example #1
0
        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);
        }
Example #2
0
        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();
                }
            }
        }
Example #3
0
        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);
        }