Posts Tagged syndication

Scott Klueppel’s Blog – Error Log RSS Feed

Sam pointed me to an article showing a really nice way to deal with error logging;  as opposed to filling a debug mail box with 100′s of mails that will soon become unmanageably large, have the error’s logged to a database, then published via RSS!

Scott Klueppel’s Blog – Error Log RSS Feed.

, , , ,

No Comments

Syndicating to RSS using the built in .net SyndicationFeed classes

My boss recently showed me a pretty handy bunch of classes for generating RSS and ATOM feeds, all built into dot net.

Start by adding a new reference to your project; System.Services.Web.

The SyndicationFeed class holds all the data about your feed and lets you spit everything out in a number of different formats (RSS2.0, ATOM1.0)- each item in the feed is held in a generic list of SyndicationItem objects. As I work for a publishers, I was creating an RSS feed of coming soon books so I added an extension method to my book class- ToSyndicationItem();

public static SyndicationItem ToSyndicationItem(this Book book)
{
    return new SyndicationItem(book.CoverTitle + " " + book.Subtitle, book.Description, new Uri(book.GetURL()))
    {
        Summary = new TextSyndicationContent(book.DescriptionShort, TextSyndicationContentKind.Plaintext),
        Id = book.Id.ToString(),
        LastUpdatedTime = book.InsertedDate
    };
}

This allows me to use all the standard select methods I already in my book class, to also populate my RSS feed. So to create the feed all I need do in my RSS.ashx handler file is;

List<Book> books = Book.GetBookPublishedBetween(DateTime.Now,DateTime.Now.AddDays( int.Parse( GroupConstants.ComingSoonMaxDays)));
List<SyndicationItem> syndicationItems = new List<SyndicationItem>();
foreach (Book book in books)
    syndicationItems.Add(book.ToSyndicationItem());

feed = new SyndicationFeed(syndicationItems)
{
    Title = new TextSyndicationContent("Coming Soon Titles"),
    Description = new TextSyndicationContent("Forthcoming publications."),
    BaseUri = new Uri(LinkHelper.GetBaseUrl())
};

var output = new StringWriter();
var writer = new XmlTextWriter(output);

new Rss20FeedFormatter(feed).WriteTo(writer);

context.Response.ContentType = "application/rss+xml";
context.Response.Write(output.ToString());

, , ,

1 Comment