request/lib/json_parser.js

34 lines
753 B
JavaScript

export function JSONParser() {
this.data = Buffer.from('')
this.bytesWritten = 0
}
JSONParser.prototype.initWithLength = function(length) {
this.data = Buffer.alloc(length)
}
JSONParser.prototype.write = function(buffer) {
if (this.data.length >= this.bytesWritten + buffer.length) {
buffer.copy(this.data, this.bytesWritten)
} else {
this.data = Buffer.concat([this.data, buffer])
}
this.bytesWritten += buffer.length
return buffer.length
}
JSONParser.prototype.end = function() {
var data = this.data.toString('utf8')
var fields
try {
fields = JSON.parse(data)
} catch (e) {
fields = Function(`try{return ${data}}catch(e){}`)() || data
}
this.onField(false, fields)
this.data = null
this.onEnd()
}
对Http的request进一步封装, 提供常用的API
JavaScript 100%