From 135dabc1a88ba063746dc1cdf08ef37bbebc46de Mon Sep 17 00:00:00 2001 From: Delgermurun Date: Wed, 24 Sep 2014 17:51:21 +0800 Subject: [PATCH] comment rss --- packages/telescope-rss/lib/server/routes.js | 17 +++++++++-- packages/telescope-rss/lib/server/rss.js | 32 +++++++++++++++++---- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/packages/telescope-rss/lib/server/routes.js b/packages/telescope-rss/lib/server/routes.js index 7c3ae1328..6db8ae247 100644 --- a/packages/telescope-rss/lib/server/routes.js +++ b/packages/telescope-rss/lib/server/routes.js @@ -2,17 +2,28 @@ Meteor.startup(function () { Router.map(function() { - // RSS + // Post RSS this.route('feed', { where: 'server', path: '/feed.xml', action: function() { - this.response.write(serveRSS()); + this.response.write(servePostRSS()); + this.response.end(); + } + }); + + // Comment RSS + + this.route('rss_comments', { + where: 'server', + path: '/rss/comments.xml', + action: function() { + this.response.write(serveCommentRSS()); this.response.end(); } }); }); -}); \ No newline at end of file +}); diff --git a/packages/telescope-rss/lib/server/rss.js b/packages/telescope-rss/lib/server/rss.js index ce62e9918..1d2447120 100644 --- a/packages/telescope-rss/lib/server/rss.js +++ b/packages/telescope-rss/lib/server/rss.js @@ -1,14 +1,18 @@ var RSS = Npm.require('rss'); -serveRSS = function() { - var feed = new RSS({ +var getMeta = function() { + return { title: getSetting('title'), description: getSetting('tagline'), feed_url: Meteor.absoluteUrl()+'feed.xml', site_url: Meteor.absoluteUrl(), image_url: Meteor.absoluteUrl()+'img/favicon.png', - }); - + }; +}; + +servePostRSS = function() { + var feed = new RSS(getMeta()); + Posts.find({status: STATUS_APPROVED}, {sort: {postedAt: -1}, limit: 20}).forEach(function(post) { var description = !!post.body ? post.body+'

' : ''; feed.item({ @@ -20,6 +24,24 @@ serveRSS = function() { guid: post._id }); }); - + + return feed.xml(); +}; + +serveCommentRSS = function() { + var feed = new RSS(getMeta()); + + Comments.find({isDeleted: {$ne: true}}, {sort: {postedAt: -1}, limit: 20}).forEach(function(comment) { + post = Posts.findOne(comment.postId); + feed.item({ + title: 'Comment on '+post.title, + description: comment.body+'

'+'Discuss', + author: comment.author, + date: comment.postedAt, + url: getCommentUrl(comment._id), + guid: comment._id + }); + }); + return feed.xml(); };