From d89687b25e4d2d6e61d7dab9e3d319a587def17b Mon Sep 17 00:00:00 2001 From: Delgermurun Date: Mon, 17 Nov 2014 21:14:56 +0800 Subject: [PATCH] RSS feed for top, best views & feed url bug fix --- packages/telescope-rss/lib/server/routes.js | 24 ++++++++++++++++++++- packages/telescope-rss/lib/server/rss.js | 15 +++++++------ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/telescope-rss/lib/server/routes.js b/packages/telescope-rss/lib/server/routes.js index 6db8ae247..61e9b0d05 100644 --- a/packages/telescope-rss/lib/server/routes.js +++ b/packages/telescope-rss/lib/server/routes.js @@ -8,7 +8,29 @@ Meteor.startup(function () { where: 'server', path: '/feed.xml', action: function() { - this.response.write(servePostRSS()); + this.response.write(servePostRSS('new')); + this.response.end(); + } + }); + + // Top Post RSS + + this.route('feed', { + where: 'server', + path: 'rss/posts/top.xml', + action: function() { + this.response.write(servePostRSS('top')); + this.response.end(); + } + }); + + // Best Post RSS + + this.route('feed', { + where: 'server', + path: 'rss/posts/best.xml', + action: function() { + this.response.write(servePostRSS('best')); this.response.end(); } }); diff --git a/packages/telescope-rss/lib/server/rss.js b/packages/telescope-rss/lib/server/rss.js index d43b36ca5..a7bdeb0df 100644 --- a/packages/telescope-rss/lib/server/rss.js +++ b/packages/telescope-rss/lib/server/rss.js @@ -1,19 +1,22 @@ var RSS = Npm.require('rss'); -var getMeta = function() { +var getMeta = function(url) { return { title: getSetting('title'), description: getSetting('tagline'), - feed_url: Meteor.absoluteUrl()+'feed.xml', + feed_url: Meteor.absoluteUrl()+url, site_url: Meteor.absoluteUrl(), image_url: Meteor.absoluteUrl()+'img/favicon.png', }; }; -servePostRSS = function() { - var feed = new RSS(getMeta()); +servePostRSS = function(view) { + var feed = new RSS(getMeta('feed.xml')); - Posts.find(getPostsParameters({}).find, {sort: {postedAt: -1}, limit: 20}).forEach(function(post) { + var params = getPostsParameters({view: view, limit: 20}); + delete params['options']['sort']['sticky']; + + Posts.find(params.find, params.options).forEach(function(post) { var description = !!post.body ? post.body+'

' : ''; feed.item({ title: post.title, @@ -29,7 +32,7 @@ servePostRSS = function() { }; serveCommentRSS = function() { - var feed = new RSS(getMeta()); + var feed = new RSS(getMeta('rss/comments.xml')); Comments.find({isDeleted: {$ne: true}}, {sort: {postedAt: -1}, limit: 20}).forEach(function(comment) { post = Posts.findOne(comment.postId);