commit 93cac1f1047a73bb7df036c8c2b634a51ef31a95
parent 09f7070cfb932f519b6c7fe9d8a4ce943c1dc388
Author: Ryan Wolf <rwolf@borderstylo.com>
Date: Wed, 23 Mar 2011 17:04:16 +0000
almost there
Diffstat:
| M | server.js | | | 6 | +++++- |
| M | tumblr.js | | | 76 | +++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- |
2 files changed, 56 insertions(+), 26 deletions(-)
diff --git a/server.js b/server.js
@@ -4,6 +4,7 @@ var sys = require('sys'),
path = require('path'),
urlParse = require('url').parse,
paperboy = require('paperboy'),
+ mustache = require('../Mu/lib/mu'),
xml2js = require('xml2js'),
webroot = path.join(path.dirname(__filename), 'static'),
router = require('./router'),
@@ -36,6 +37,7 @@ router.get('thoms/fav.png', sendStatic);
/**
* the one and only interesting call
**/
+var template = mustache.compileText('<<DT><A HREF="{{url}}">{{title}}</A>\n');
router.get('thoms/likes', function (request, response) {
var url = urlParse(request.url, true);
@@ -85,10 +87,12 @@ router.get('thoms/likes', function (request, response) {
response.write(header.join('\n') + '\n');
if (!result.posts.post) { return response.end(''); }
result.posts.post.forEach(function (post) {
- response.write(tumblr.serialize(post) + '\n');
+ response.write(tumblr.serialize(post));
});
response.end('</DL><p>\n');
});
});
crequest.end();
});
+
+
diff --git a/tumblr.js b/tumblr.js
@@ -1,40 +1,66 @@
var sys = require('sys');
-var regular = function (post) {
- return post['@'].url;
-};
-
-var link = function (post) {
- return post['link-url'];
+var url = {
+ regular: function (post) { return post['@'].url; },
+ link: function (post) { return post['link-url']; },
+ photo: function (post) {
+ var tumblelog = post.tumblelog['@'].url.replace(/\/$/, ''),
+ generic = post['photo-url'][0]['#'],
+ link = post['photo-link-url'];
+ if (!link || tumblelog == link.replace(/\/$/, '')) {
+ return generic;
+ };
+ return link;
+ },
+ video: function (post) {
+ var link = post['video-source'];
+ return (link.indexOf('http') == 0) ? link : url.regular(post);
+ }
};
-var photo = function (post) {
- var tumblelog = post.tumblelog['@'].url.replace(/\/$/, ''),
- generic = post['photo-url'][0]['#'],
- link = post['photo-link-url'];
- if (!link || tumblelog == link.replace(/\/$/, '')) {
- return generic;
- };
- return link;
+var getUrl = function (post) {
+ switch (post['@'].type) {
+ case 'link':
+ return url.link(post);
+ case 'photo':
+ return url.photo(post);
+ case 'video':
+ return url.video(post);
+ }
+ return url.regular(post);
};
-var video = function (post) {
- var link = post['video-source'];
- return (link.indexOf('http') == 0) ? link : regular(post);
+var title = {
+ none: getUrl,
+ regular: function (post) {
+ var t = post['regular-title'];
+ return (t) ? t : title.none(post);
+ },
+ link: function (post) {
+ var t = post['link-text'];
+ return (t) ? t : title.none(post);
+ },
+ conversation: function (post) {
+ var t = post['conversation-title'];
+ return (t) ? t : title.none(post);
+ }
};
-var getUrl = function (post) {
+var getTitle = function (post) {
switch (post['@'].type) {
- case 'link':
- return link(post);
+ case 'quote':
case 'photo':
- return photo(post);
- case 'video':
- return video(post);
+ return title.none(post);
+ case 'regular':
+ return title.regular(post);
+ case 'link':
+ return title.link(post);
+ case 'conversation':
+ return title.conversation(post);
}
- return regular(post);
+ return sys.inspect(post);
};
exports.serialize = function (post) {
- return sys.inspect(post);
+ return sys.inspect({ url: getUrl(post), title: getTitle(post) }) + '\n';
};