53 lines
1.1 KiB
JavaScript
Raw Normal View History

2016-03-30 14:49:37 +02:00
/* Magic Mirror
* NewsFetcher
*
* By Michael Teeuw http://michaelteeuw.nl
* MIT Licensed.
*/
2016-04-05 14:35:11 -04:00
var FeedMe = require("feedme");
var request = require("request");
var iconv = require("iconv-lite");
2016-03-30 14:49:37 +02:00
var NewsFetcher = function() {
var self = this;
2016-04-05 14:35:11 -04:00
self.successCallback = function() {};
self.errorCallback = function() {};
2016-03-30 14:49:37 +02:00
self.items = [];
/* fetchNews()
* Fetch the new news items.
*
* attribute url string - The url to fetch.
* attribute success function(items) - Callback on succes.
* attribute error function(error) - Callback on error.
2016-03-30 14:49:37 +02:00
*/
2016-04-05 13:16:23 +02:00
self.fetchNews = function(url, success, error, encoding) {
2016-03-30 14:49:37 +02:00
self.successCallback = success;
self.errorCallback = error;
2016-04-05 14:54:40 +02:00
var parser = new FeedMe();
2016-04-05 14:35:11 -04:00
parser.on("item", function(item) {
2016-04-05 14:54:40 +02:00
self.items.push({
title: item.title,
pubdate: item.pubdate,
});
});
2016-04-05 14:35:11 -04:00
parser.on("end", function(item) {
2016-04-05 14:54:40 +02:00
self.successCallback(self.items);
});
2016-04-05 14:35:11 -04:00
parser.on("error", function(error) {
2016-04-05 14:54:40 +02:00
self.errorCallback(error);
});
2016-04-05 14:35:11 -04:00
request({uri: url, encoding: null}).pipe(iconv.decodeStream(encoding)).pipe(parser);
2016-03-30 14:49:37 +02:00
};
};
module.exports = NewsFetcher;