Configurable encoding. #126

This commit is contained in:
Michael Teeuw
2016-04-05 13:16:23 +02:00
parent 1a20bd2f4d
commit 06efd01032
5 changed files with 24 additions and 8 deletions

View File

@@ -70,6 +70,13 @@ The following properties can be configured:
<br><b>Default value:</b> <code>2000</code> (2.5 seconds)
</td>
</tr>
<tr>
<td><code>encoding</code></td>
<td>The encoding of the news feed.<br>
<br><b>Possible values:</b><code>'UTF-8'</code>, <code>'ISO-8859-1'</code>, etc ...
<br><b>Default value:</b> <code>'UTF-8'</code>
</td>
</tr>
</tbody>
</table>

View File

@@ -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()

View File

@@ -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 + '<br>';
// }
// 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
});
},

View File

@@ -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);
};
};

View File

@@ -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', {