-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstibFetcher.js
114 lines (96 loc) · 2.46 KB
/
stibFetcher.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
var request = require('request');
var parseString = require('xml2js').parseString;
var stibFetcher = function(url,reloadInterval,stationid) {
var self = this;
var realoadTimer = null;
var lines = [];
var fetchFailedCallback = function() {};
var linesReceivedCallback = function() {};
/*
*
*/
var fetchStib = function() {
clearTimeout(realoadTimer);
realoadTimer = null;
request(url, function(err, response, data) {
if (err) {
fetchFailedCallback(self,err);
scheduleTimer();
return;
}
if (response.statusCode == 200) {
// get json from data (xml)
parseString(data, function(error, results) {
var newLines = [];
for (var e in results) {
lines = results[e];
}
// console.log("STIB results waitingtime " + JSON.stringify(lines));
self.broadcastLines();
scheduleTimer();
});
} else {
fetchFailedCallback(self,response.statusCode);
scheduleTimer();
return;
}
});
};
var scheduleTimer = function() {
clearTimeout(realoadTimer);
realoadTimer = setTimeout(function(){
fetchStib();
},reloadInterval);
};
/* public methods */
/* startFetch()
* Initiate fetchCalendar();
*/
this.startFetch = function() {
fetchStib();
};
/* broadcastItems()
* Broadcast the exsisting events.
*/
this.broadcastLines = function() {
//console.log('Broadcasting ' + events.length + ' events.');
linesReceivedCallback(self);
};
/* onReceive(callback)
* Sets the on success callback
*
* argument callback function - The on success callback.
*/
this.onReceive = function(callback) {
linesReceivedCallback = callback;
};
/* onError(callback)
* Sets the on error callback
*
* argument callback function - The on error callback.
*/
this.onError = function(callback) {
fetchFailedCallback = callback;
};
/* url()
* Returns the url of this fetcher.
*
* return string - The url of this fetcher.
*/
this.url = function() {
return url;
};
this.stationid = function() {
return stationid;
};
/* lines()
* Returns current available events for this fetcher.
*
* return array - The current available events for this fetcher.
*/
this.lines = function() {
console.log("STIB this.lines " + JSON.stringify(lines));
return lines;
};
};
module.exports = stibFetcher;