From 06efd01032b6d4bc6173adf9dbe09e95bc9570a1 Mon Sep 17 00:00:00 2001 From: Michael Teeuw Date: Tue, 5 Apr 2016 13:16:23 +0200 Subject: [PATCH] Configurable encoding. #126 --- modules/default/newsfeed/README.md | 7 +++++++ modules/default/newsfeed/fetcher.js | 4 ++-- modules/default/newsfeed/newsfeed.js | 11 ++++++++++- modules/default/newsfeed/newsfetcher.js | 4 ++-- modules/default/newsfeed/node_helper.js | 6 +++--- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/modules/default/newsfeed/README.md b/modules/default/newsfeed/README.md index 8cfff7e7..eaaf2032 100644 --- a/modules/default/newsfeed/README.md +++ b/modules/default/newsfeed/README.md @@ -70,6 +70,13 @@ The following properties can be configured:
Default value: 2000 (2.5 seconds) + + encoding + The encoding of the news feed.
+
Possible values:'UTF-8', 'ISO-8859-1', etc ... +
Default value: 'UTF-8' + + diff --git a/modules/default/newsfeed/fetcher.js b/modules/default/newsfeed/fetcher.js index 3a4a81c3..427d198f 100644 --- a/modules/default/newsfeed/fetcher.js +++ b/modules/default/newsfeed/fetcher.js @@ -14,7 +14,7 @@ var NewsFetcher = require('./newsfetcher.js'); * attribute reloadInterval number - Reload interval in milliseconds. */ -var Fetcher = function(url, reloadInterval) { +var Fetcher = function(url, reloadInterval, encoding) { var self = this; var newsFetcher = new NewsFetcher(); if (reloadInterval < 1000) { @@ -44,7 +44,7 @@ var Fetcher = function(url, reloadInterval) { }, function(error) { fetchFailedCallback(self, error); scheduleTimer(); - }); + }, encoding); }; /* scheduleTimer() diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js index b6640382..b643a000 100644 --- a/modules/default/newsfeed/newsfeed.js +++ b/modules/default/newsfeed/newsfeed.js @@ -16,6 +16,7 @@ Module.register('newsfeed',{ reloadInterval: 5 * 60 * 1000, // every 5 minutes updateInterval: 7.5 * 1000, animationSpeed: 2.5 * 1000, + encoding: 'UTF-8' //ISO-8859-1 }, // Define required scripts. @@ -56,6 +57,13 @@ Module.register('newsfeed',{ getDom: function() { var wrapper = document.createElement("div"); + // wrapper.className = "small"; + // for (var n in this.newsItems) { + // var item = this.newsItems[n]; + // wrapper.innerHTML += item.title + '
'; + // } + // return wrapper; + if (this.activeItem >= this.newsItems.length) { this.activeItem = 0; } @@ -90,7 +98,8 @@ Module.register('newsfeed',{ Log.log('Add news feed to fetcher: ' + this.config.feedUrl); this.sendSocketNotification('ADD_FEED', { url: this.config.feedUrl, - reloadInterval: this.config.reloadInterval + reloadInterval: this.config.reloadInterval, + encoding: this.config.encoding }); }, diff --git a/modules/default/newsfeed/newsfetcher.js b/modules/default/newsfeed/newsfetcher.js index 3075ac67..145e4cb0 100644 --- a/modules/default/newsfeed/newsfetcher.js +++ b/modules/default/newsfeed/newsfetcher.js @@ -43,10 +43,10 @@ var NewsFetcher = function() { * attribute success function(items) - Callback on succes. * attribute error function(error) - Callback on error. */ - self.fetchNews = function(url, success, error) { + self.fetchNews = function(url, success, error, encoding) { self.successCallback = success; self.errorCallback = error; - request({uri:url, encoding:null}).pipe(iconv.decodeStream('ISO-8859-1')).pipe(parser); + request({uri:url, encoding:null}).pipe(iconv.decodeStream(encoding)).pipe(parser); }; }; diff --git a/modules/default/newsfeed/node_helper.js b/modules/default/newsfeed/node_helper.js index 4199875d..12328607 100644 --- a/modules/default/newsfeed/node_helper.js +++ b/modules/default/newsfeed/node_helper.js @@ -20,7 +20,7 @@ module.exports = NodeHelper.create({ // Subclass socketNotificationReceived received. socketNotificationReceived: function(notification, payload) { if(notification === 'ADD_FEED') { - this.createFetcher(payload.url, payload.reloadInterval); + this.createFetcher(payload.url, payload.reloadInterval, payload.encoding); } }, @@ -32,7 +32,7 @@ module.exports = NodeHelper.create({ * attribute reloadInterval number - Reload interval in milliseconds. */ - createFetcher: function(url, reloadInterval) { + createFetcher: function(url, reloadInterval, encoding) { var self = this; if (!validUrl.isUri(url)){ @@ -43,7 +43,7 @@ module.exports = NodeHelper.create({ var fetcher; if (typeof self.fetchers[url] === 'undefined') { console.log('Create new news fetcher for url: ' + url + ' - Interval: ' + reloadInterval); - fetcher = new Fetcher(url, reloadInterval); + fetcher = new Fetcher(url, reloadInterval, encoding); fetcher.onReceive(function(fetcher) { self.sendSocketNotification('NEWS_ITEMS', {