コード例 #1
0
 public FeedResult(SyndicationFeedFormatter feed, DateTime lastModified)
 {
     this.feed         = feed;
     this.lastModified = lastModified;
 }
コード例 #2
0
 public SyndicationActionResult(SyndicationFeedFormatter formatter)
 {
     this.formatter = formatter;
 }
コード例 #3
0
 public FeedResult(SyndicationFeedFormatter feed)
 {
     _feed = feed;
 }
コード例 #4
0
 public FeedBodyWriter(SyndicationFeedFormatter formatter) : base(false)
 {
     this.formatter = formatter;
 }
コード例 #5
0
ファイル: FeedResult.cs プロジェクト: zyqghjlll/DamienGKit
 public FeedResult(SyndicationFeedFormatter feed)
 {
     this.feed = feed ?? throw new ArgumentNullException(nameof(feed));
 }
コード例 #6
0
 public RSSActionResult(SyndicationFeedFormatter feed)
 {
     _feed = feed;
 }
コード例 #7
0
ファイル: RSS.svc.cs プロジェクト: ilkerhalil/TicketDesk
        public SyndicationFeedFormatter CreateFeed()
        {
            SyndicationFeed feed = null;

            bool   isEnabled     = false;
            string enabledString = ConfigurationManager.AppSettings["EnableRSS"];

            if (!string.IsNullOrEmpty(enabledString))
            {
                isEnabled = Convert.ToBoolean(enabledString);
            }


            if (!isEnabled)
            {
                feed = new SyndicationFeed("TicketDesk Feed Disabled", "FeedDisabled", null, "FeedDisabled", DateTimeOffset.Now, null);
            }
            else
            {
                TicketDataDataContext ctx = new TicketDataDataContext();

                // Create a new Syndication Feed.

                IQueryable <Ticket> tickets = from t in ctx.Tickets
                                              select t;


                // Create a new Syndication Item.
                string idArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["id"];
                if (idArray != null)
                {
                    tickets = from t in tickets
                              where idArray.Split(',').Contains(t.TicketId.ToString())
                              select t;
                }



                string categoryArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["category"];
                if (categoryArray != null)
                {
                    tickets = from t in tickets
                              where categoryArray.Split(',').Contains(t.Category)
                              select t;
                }

                string tagArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["tag"];
                if (tagArray != null)
                {
                    tickets = from t in tickets
                              join tags in ctx.TicketTags
                              on t.TicketId equals tags.TicketId
                              where tagArray.Split(',').Contains(tags.TagName)
                              select t;
                }

                string priorityArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["priority"];
                if (priorityArray != null)
                {
                    tickets = from t in tickets
                              where priorityArray.Split(',').Contains(t.Priority)
                              select t;
                }

                string assignedArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["assigned"];
                if (assignedArray != null)
                {
                    tickets = from t in tickets
                              where assignedArray.Split(',').Contains(t.AssignedTo)
                              select t;
                }

                string ownerArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["owner"];
                if (ownerArray != null)
                {
                    tickets = from t in tickets
                              where ownerArray.Split(',').Contains(t.Owner)
                              select t;
                }

                string statusArray = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["status"];
                if (statusArray != null)
                {
                    tickets = from t in tickets
                              where statusArray.Split(',').Contains(t.CurrentStatus)
                              select t;
                }

                string closed = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["closed"];
                if ((statusArray == null) && ((closed == null) || ((closed != "yes") && (closed != "1"))))
                {
                    tickets = from t in tickets
                              where t.CurrentStatus != "Closed"
                              select t;
                }

                List <SyndicationItem> items = new List <SyndicationItem>();
                foreach (Ticket ticket in tickets.Distinct().OrderByDescending(t => t.LastUpdateDate))
                {
                    SyndicationItem item = GetRSSEntryForTicket(ticket);
                    items.Add(item);
                }

                feed = new SyndicationFeed("TicketDesk RSS", "TicketDeskRSS", null, "TicketDeskRSS", DateTimeOffset.Now, items);
            }
            string query = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"];
            SyndicationFeedFormatter formatter = null;

            if (query == "atom")
            {
                formatter = new Atom10FeedFormatter(feed);
            }
            else
            {
                formatter = new Rss20FeedFormatter(feed);
            }

            return(formatter);
        }
コード例 #8
0
 public void Publish(SyndicationFeedFormatter feedFormatter)
 {
 }
コード例 #9
0
        /// <summary>
        /// Gets an RSS feed from a given URL and returns the resulting XML as a string.
        /// </summary>
        /// <param name="url">URL of the feed to load.</param>
        /// <param name="count">The count of postings to return.</param>
        /// <returns>The feed XML as a string.</returns>
        public SyndicationFeed GetFeed(string url, int count)
        {
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.IgnoreWhitespace             = true;
            settings.CheckCharacters              = true;
            settings.CloseInput                   = true;
            settings.IgnoreComments               = true;
            settings.IgnoreProcessingInstructions = true;
            settings.ProhibitDtd                  = false;

            using (XmlReader reader = XmlReader.Create(url, settings))
            {
                SyndicationFeedFormatter formatter = null;
                Atom10FeedFormatter      atom      = new Atom10FeedFormatter();
                Rss20FeedFormatter       rss       = new Rss20FeedFormatter();
                SyndicationFeed          feed;

                // Determine the format of the feed
                if (reader.ReadState == ReadState.Initial)
                {
                    reader.MoveToContent();
                }

                if (atom.CanRead(reader))
                {
                    formatter = atom;
                }

                if (rss.CanRead(reader))
                {
                    formatter = rss;
                }

                if (formatter == null)
                {
                    return(null);
                }

                formatter.ReadFrom(reader);
                feed = formatter.Feed;

                // Remove unwanted items
                List <SyndicationItem> items = new List <SyndicationItem>();

                int added = 0;

                foreach (SyndicationItem i in feed.Items)
                {
                    items.Add(i);

                    if (added++ == count - 1)
                    {
                        break;
                    }
                }

                feed.Items = items;
                return(feed);
            }
        }
コード例 #10
0
 public FeedResult(SyndicationFeedFormatter formattedFeed)
 {
     this.formattedFeed = formattedFeed;
 }
コード例 #11
0
 public FeedResultController(SyndicationFeedFormatter formattedFeed)
 {
     this.formattedFeed = formattedFeed;
 }
コード例 #12
0
        public static WebFeed ReadFeed(string url, string tipo)
        {
            try
            {
                if (!url.StartsWith("http://") && !url.StartsWith("https://"))
                {
                    url = string.Format("http://{0}", url);
                }

                SyndicationFeedFormatter formatter = null;

                if (tipo.Equals("RSS"))
                {
                    formatter = new Rss20FeedFormatter();
                }
                else if (tipo.Equals("ATOM"))
                {
                    formatter = new Atom10FeedFormatter();
                }

                using (XmlReader reader = XmlReader.Create(url))
                {
                    // le decimos al formateador que analice el XML del feed.
                    formatter.ReadFrom(reader);
                }

                WebFeed webFeed = new WebFeed
                {
                    Title           = formatter.Feed.Title.Text,
                    Description     = formatter.Feed.Description.Text,
                    Language        = formatter.Feed.Language,
                    LastUpdatedTime = formatter.Feed.LastUpdatedTime.DateTime,
                    Nodes           = new List <WebFeedNode>()
                };

                //if (formatter.Feed.Copyright != null)
                //    webFeed.Copyright = formatter.Feed.Copyright.Text;

                foreach (SyndicationItem item in formatter.Feed.Items)
                {
                    StringBuilder text    = new StringBuilder().AppendFormat(item.Summary.Text);
                    string        summary = text.ToString();
                    if (summary.Length > 256)
                    {
                        summary = summary.Remove(256);
                    }

                    webFeed.Nodes.Add(new WebFeedNode
                    {
                        Title          = item.Title.Text,
                        PublishDate    = item.PublishDate.DateTime,
                        LastUpdateTime = item.LastUpdatedTime.DateTime,
                        Summary        = summary,
                        Link           = item.Links.First().Uri.ToString()
                    });
                }

                return(webFeed);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(new WebFeed {
                    Nodes = new List <WebFeedNode>()
                });
            }
        }