mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-19 10:07:12 +00:00
api
This commit is contained in:
73
node_modules/needle/lib/parsers.js
generated
vendored
Normal file
73
node_modules/needle/lib/parsers.js
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
//////////////////////////////////////////
|
||||
// Defines mappings between content-type
|
||||
// and the appropriate parsers.
|
||||
//////////////////////////////////////////
|
||||
|
||||
var Transform = require('stream').Transform;
|
||||
|
||||
function parserFactory(fn) {
|
||||
|
||||
return function() {
|
||||
var chunks = [],
|
||||
stream = new Transform({ objectMode: true });
|
||||
|
||||
// Buffer all our data
|
||||
stream._transform = function(chunk, encoding, done) {
|
||||
chunks.push(chunk);
|
||||
done();
|
||||
}
|
||||
|
||||
// And call the parser when all is there.
|
||||
stream._flush = function(done) {
|
||||
var self = this,
|
||||
data = Buffer.concat(chunks);
|
||||
|
||||
try {
|
||||
fn(data, function(err, result) {
|
||||
if (err) throw err;
|
||||
self.push(result);
|
||||
});
|
||||
} catch (err) {
|
||||
// console.error('Error while processing: ', err);
|
||||
self.push(data); // just pass the original data
|
||||
} finally {
|
||||
done();
|
||||
}
|
||||
}
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports['application/json'] = parserFactory(function(buffer, callback) {
|
||||
|
||||
var err, data;
|
||||
try {
|
||||
data = JSON.parse(buffer);
|
||||
} catch (e) {
|
||||
err = e;
|
||||
}
|
||||
callback(err, data);
|
||||
|
||||
});
|
||||
|
||||
module.exports['text/javascript'] = module.exports['application/json'];
|
||||
|
||||
try {
|
||||
|
||||
var xml2js = require('xml2js');
|
||||
|
||||
// xml2js.Parser.parseString() has the exact same function signature
|
||||
// as our ParseStream expects, so we can reuse this.
|
||||
module.exports['application/xml'] = parserFactory(new xml2js.Parser({
|
||||
explicitRoot : true,
|
||||
explicitArray: false
|
||||
}).parseString, true);
|
||||
|
||||
// aliases for other XML content types
|
||||
module.exports['text/xml'] = module.exports['application/xml'];
|
||||
module.exports['application/rss+xml'] = module.exports['application/xml'];
|
||||
module.exports['application/atom+xml'] = module.exports['application/xml'];
|
||||
|
||||
} catch(e) { /* xml2js not found */ }
|
Reference in New Issue
Block a user