hackernews2nntp
Version:
Post Hacker News Stories & Comments to an NNTP Server
66 lines (57 loc) • 1.51 kB
JavaScript
// Generated by CoffeeScript 1.8.0
(function() {
var Q, http_get, request, util;
util = require('util');
Q = require('q');
request = require('request');
exports.conf = {
url: 'https://hacker-news.firebaseio.com/v0/%s.json'
};
http_get = function(url) {
var deferred, opt;
deferred = Q.defer();
opt = {
url: url
};
request.get(opt, function(err, res, body) {
if (err) {
err.message = "" + url + ": " + err.message;
deferred.reject(err);
return;
}
if (res.statusCode === 200) {
return deferred.resolve(body);
} else {
return deferred.reject(new Error("HTTP " + res.statusCode));
}
});
return deferred.promise;
};
exports.maxitem = function() {
return http_get(util.format(exports.conf.url, 'maxitem')).then(function(body) {
var maxitem;
maxitem = parseInt(body) || 0;
if (maxitem < 1) {
throw new Error("maxitem <= 0");
} else {
return maxitem;
}
});
};
exports.top100 = function() {
return http_get(util.format(exports.conf.url, 'topstories')).then(function(body) {
var arr, err;
try {
arr = JSON.parse(body);
} catch (_error) {
err = _error;
throw new Error("invalid json: " + err.message);
}
if (util.isArray(arr) && arr.length > 0) {
return arr;
} else {
throw new Error('a non-empty array is required');
}
});
};
}).call(this);