src/Orchard.Web/Core/Feeds/Rss/RssFeedBuilder.cs

(完整代码) 1KB

using System;
using System.Web.Mvc;
using System.Xml.Linq;
using JetBrains.Annotations;
using Orchard.Core.Feeds.Models;

namespace Orchard.Core.Feeds.Rss {
    [UsedImplicitly]
    public class RssFeedBuilder : IFeedBuilderProvider, IFeedBuilder {
        public FeedBuilderMatch Match(FeedContext context) {
            if (context.Format == "rss") {
                return new FeedBuilderMatch {
                    FeedBuilder = this,
                    Priority = -5
                };
            }
            return null;
        }

        public ActionResult Process(FeedContext context, Action populate) {
            var rss = new XElement("rss");
            rss.SetAttributeValue("version", "2.0");

            var channel = new XElement("channel");
            context.Response.Element = channel;
            rss.Add(channel);

            populate();

            return new RssResult(new XDocument(rss));
        }

        public FeedItem<TItem> AddItem<TItem>(FeedContext context, TItem item) {
            var feedItem = new FeedItem<TItem> {
                Item = item,
                Element = new XElement("item"),
            };
            context.Response.Items.Add(feedItem);
            context.Response.Element.Add(feedItem.Element);
            return feedItem;
        }

        public void AddProperty(FeedContext context, FeedItem feedItem, string name, string value) {
            if (feedItem == null) {
                context.Response.Element.Add(new XElement(name, value));
            }
            else {
                feedItem.Element.Add(new XElement(name, value));
            }
        }
    }

}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。