Пример #1
0
        public bool AddRSSInfo(RSSViewModel vm)
        {
            //pubdate format from http://www.dotnetperls.com/pubdate

            IFileProvider      provider = _appEnvironment.ContentRootFileProvider;
            IDirectoryContents contents = provider.GetDirectoryContents("wwwroot\\content");

            if (!contents.Any(c => c.Name == "feed.xml"))
            {
                if (!CreateXMLFile())
                {
                    return(false);
                }
            }

            XDocument xdoc;
            DateTime  now = DateTime.Now;

            if (!XmlFilePopulated())
            {
                xdoc = new XDocument(
                    new XElement("rss", new XAttribute("version", "2.0"),
                                 new XElement("channel", new XElement("title", vm.Title),
                                              new XElement("description", vm.Description),
                                              new XElement("link", vm.Link),
                                              new XElement("pubDate", now.ToString("ddd',' d MMM yyyy HH':'mm':'ss") +
                                                           " " +
                                                           now.ToString("zzzz").Replace(":", "")),
                                              new XElement("lastBuildDate", now.ToString("ddd',' d MMM yyyy HH':'mm':'ss") +
                                                           " " +
                                                           now.ToString("zzzz").Replace(":", "")),
                                              new XElement("ttl", vm.TimeToLive))));
            }
            else
            {
                xdoc = XDocument.Load(contents.Where(c => c.Name == "feed.xml").FirstOrDefault().CreateReadStream());

                xdoc.Descendants("title").FirstOrDefault()?.SetValue(vm.Title);
                xdoc.Descendants("description").FirstOrDefault()?.SetValue(vm.Description);
                xdoc.Descendants("link").FirstOrDefault()?.SetValue(vm.Link);
                xdoc.Descendants("lastBuildDate").FirstOrDefault()?.SetValue(now.ToString("ddd',' d MMM yyyy HH':'mm':'ss") +
                                                                             " " +
                                                                             now.ToString("zzzz").Replace(":", ""));
                xdoc.Descendants("ttl").FirstOrDefault()?.SetValue(vm.TimeToLive);
            }

            try
            {
                using (var fileStream = new FileStream(_appEnvironment.ContentRootPath + "\\wwwroot\\content\\feed.xml", FileMode.Create))
                {
                    xdoc.Save(fileStream);
                }
            }
            catch (Exception e)
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        public IActionResult Index()
        {
            var vm = new RSSViewModel();

            _rssService.PopulateRSSInfoViewModel(vm);

            return(View(vm));
        }
Пример #3
0
        public IActionResult Index(RSSViewModel vm)
        {
            if (ModelState.IsValid)
            {
                if (!_rssService.AddRSSInfo(vm))
                {
                    return(View(vm));
                }
            }

            return(RedirectToAction("Index", "Home"));
        }
Пример #4
0
        public void PopulateRSSInfoViewModel(RSSViewModel vm)
        {
            IFileProvider      provider = _appEnvironment.ContentRootFileProvider;
            IDirectoryContents contents = provider.GetDirectoryContents("wwwroot\\content");

            if (!contents.Any(c => c.Name == "feed.xml"))
            {
                CreateXMLFile();
                vm.RSSCreated = false;
                return;
            }

            if (!XmlFilePopulated())
            {
                return;
            }


            XDocument xdoc = XDocument.Load(contents.Where(c => c.Name == "feed.xml").FirstOrDefault().CreateReadStream());

            if (xdoc != null)
            {
                vm.Title       = xdoc.Descendants("title").FirstOrDefault()?.Value;
                vm.Description = xdoc.Descendants("description").FirstOrDefault()?.Value;
                vm.Link        = xdoc.Descendants("link").FirstOrDefault()?.Value;

                string   pubDate = xdoc.Descendants("pubDate").FirstOrDefault()?.Value;
                DateTime pubDateTime;
                if (DateTime.TryParse(pubDate, out pubDateTime))
                {
                    vm.PublishedDate = pubDateTime;
                }

                string   updateDate = xdoc.Descendants("lastBuildDate").FirstOrDefault()?.Value;
                DateTime updateDateTime;
                if (DateTime.TryParse(updateDate, out updateDateTime))
                {
                    vm.UpdatedDate = updateDateTime;
                }

                int ttl;
                if (int.TryParse(xdoc.Descendants("ttl").FirstOrDefault()?.Value, out ttl))
                {
                    vm.TimeToLive = ttl;
                }

                vm.RSSCreated = true;
            }
        }