2022-04-14 14:23:41 +02:00
|
|
|
const EventEmitter = require('events');
|
|
|
|
|
|
|
|
class EventParser extends EventEmitter {
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
this.buffer = '';
|
|
|
|
}
|
|
|
|
|
2022-04-20 16:15:33 +02:00
|
|
|
parse(data) {
|
2022-04-14 14:23:41 +02:00
|
|
|
if (data === undefined) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
this.buffer += data;
|
2022-04-21 13:43:33 +02:00
|
|
|
const indexOfEnd = this.buffer.indexOf(constants.EVENT_DELIMITER);
|
2022-04-14 14:23:41 +02:00
|
|
|
if (indexOfEnd === -1) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const event = JSON.parse(this.buffer.substring(0, indexOfEnd));
|
|
|
|
this.buffer = '';
|
|
|
|
if (event.id === undefined) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const eventId = event.id.toLowerCase();
|
2022-04-20 16:15:33 +02:00
|
|
|
this.emit(eventId, event.data);
|
2022-04-14 14:23:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = EventParser;
|