30 lines
650 B
JavaScript
30 lines
650 B
JavaScript
if (global.GENTLY) require = GENTLY.hijack(require);
|
|
|
|
var Buffer = require('buffer').Buffer;
|
|
|
|
function JSONParser(parent) {
|
|
this.parent = parent;
|
|
this.chunks = [];
|
|
this.bytesWritten = 0;
|
|
}
|
|
exports.JSONParser = JSONParser;
|
|
|
|
JSONParser.prototype.write = function(buffer) {
|
|
this.bytesWritten += buffer.length;
|
|
this.chunks.push(buffer);
|
|
return buffer.length;
|
|
};
|
|
|
|
JSONParser.prototype.end = function() {
|
|
try {
|
|
var fields = JSON.parse(Buffer.concat(this.chunks));
|
|
for (var field in fields) {
|
|
this.onField(field, fields[field]);
|
|
}
|
|
} catch (e) {
|
|
this.parent.emit('error', e);
|
|
}
|
|
this.data = null;
|
|
|
|
this.onEnd();
|
|
};
|