28 lines
740 B
JavaScript
28 lines
740 B
JavaScript
|
if (global.GENTLY) require = GENTLY.hijack(require);
|
||
|
|
||
|
// This is a buffering parser, not quite as nice as the multipart one.
|
||
|
// If I find time I'll rewrite this to be fully streaming as well
|
||
|
var querystring = require('querystring');
|
||
|
|
||
|
function QuerystringParser(maxKeys) {
|
||
|
this.maxKeys = maxKeys;
|
||
|
this.buffer = '';
|
||
|
}
|
||
|
exports.QuerystringParser = QuerystringParser;
|
||
|
|
||
|
QuerystringParser.prototype.write = function(buffer) {
|
||
|
this.buffer += buffer.toString('ascii');
|
||
|
return buffer.length;
|
||
|
};
|
||
|
|
||
|
QuerystringParser.prototype.end = function() {
|
||
|
var fields = querystring.parse(this.buffer, '&', '=', { maxKeys: this.maxKeys });
|
||
|
for (var field in fields) {
|
||
|
this.onField(field, fields[field]);
|
||
|
}
|
||
|
this.buffer = '';
|
||
|
|
||
|
this.onEnd();
|
||
|
};
|
||
|
|