From bc16d530d8268762d2048ad516b95f1c6e14956e Mon Sep 17 00:00:00 2001
From: psychobunny <psycho.bunny@hotmail.com>
Date: Mon, 27 May 2013 14:55:07 -0400
Subject: [PATCH] feed.js

---
 src/feed.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 src/feed.js

diff --git a/src/feed.js b/src/feed.js
new file mode 100644
index 0000000000..763b3855a7
--- /dev/null
+++ b/src/feed.js
@@ -0,0 +1,83 @@
+(function(Feed) {
+	var	RDB = require('./redis.js'),
+		schema = require('./schema.js'),
+		posts = require('./posts.js'),
+		topics = require('./topics.js'),
+		config = require('../config.js');
+
+
+
+	function saveFeed(feed, xml) {
+		feed.endEntry();
+		console.log(xml.toString())
+	}
+
+	function createFeed(xml, urn, title, feed_url, author) {
+		var ATOMWriter = require('atom-writer'),
+			feed = new ATOMWriter(xml);
+
+
+		return feed
+				  .startFeed(urn)
+				  .writeStartIndex(1)
+				  .writeItemsPerPage(20)
+				  .writeTotalResults(20)
+				  .writeTitle(title)
+				  .writeLink(feed_url, 'application/atom+xml', 'self');
+	}
+
+	function createEntry(feed, urn, title, content, url, author) {
+		return feed		
+				  .startEntry(urn)
+				  .writeTitle('Reply #' + title)
+				  .writeLink(url, 'text/html')
+				  .writeContent(content, 'text', 'en')
+				  .writeAuthorRAW(author)
+				  .endEntry();
+	}
+
+	Feed.updateTopic = function(tid, cid) {
+		var cache_time_in_seconds = 60,
+			XMLWriter = require('xml-writer');
+			xml = new XMLWriter(true);
+
+		function getTopicData(next) {
+			topics.getTopicById(tid, 0, function(topicData) {
+				next(null, topicData);
+			});
+		}
+
+		function getPostsData(next) {
+			posts.getPostsByTid(tid, 0, -20, -1, function(postsData) {
+				next(null, postsData);
+			});
+		}
+
+
+		async.parallel([getTopicData, getPostsData], function(err, results) {
+			var topicData = results[0],
+				postsData = results[1].postData,
+				userData = results[1].userData,
+				url = topicData.category_slug + '/' + topicData.slug;
+
+			var post = topicData.main_posts[0];
+			var urn = 'urn:' + cid + ':' + tid;
+			var feed = createFeed(xml, urn, topicData.topic_name, url, post.username);
+
+			for (var i = 0, ii = postsData.pid.length; i < ii; i++) {
+				urn = 'urn:' + cid + ':' + tid + ':' + postsData.pid[i];
+				feed = createEntry(feed, urn, postsData.pid[i], postsData.content[i], url, userData[postsData.uid[i]].username);
+			}
+
+			saveFeed(feed, xml);
+		});
+
+	};
+
+
+	Feed.updateCategory = function(params) {
+
+	};
+
+
+}(exports));
\ No newline at end of file