Skip to content

Instantly share code, notes, and snippets.

@thedude42
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thedude42/688500ca5c6ff890ee46 to your computer and use it in GitHub Desktop.
Save thedude42/688500ca5c6ff890ee46 to your computer and use it in GitHub Desktop.
lr_response_xml_to_json
"use strict";
var xml2js = require('xml2js'),
vsm = require('lrs/virtualServerModule');
// callback function that implements the xml-to-json gateway
function xml2json_converter(servReq, servRes, cliReq) {
cliReq.on('response', function(response) {
var body = [],
body_len = 0;
// condition for performing the conversion ...
if ( ! ('Content-Type' in response.headers) ||
('Content-Type' in response.headers &&
response.headers['Content-Type'].indexOf('/xml') == -1) ) {
response.bindHeaders(servRes);
response.fastPipe(servRes);
return;
}
response.on('data', function(chunk) {
body.push(chunk);
body_len += chunk.length;
});
response.on('end', function() {
body = Buffer.concat(body, body_len);
response.bindHeaders(servRes);
xml2js.parseString(body, function(err, result) {
if (err || ! result) {
console.log('Parse error converting XML to json: '+err);
servRes.end(body);
}
else {
servRes.setHeader('Content-Type', 'application/json');
servRes.end(JSON.stringify(result));
}
});
});
response.on('error', function(err) {
//console.log("error seen on response: "+err);
});
});
cliReq();
}
vsm.on('exist', 'xml2json_gateway', function(vs) {
vs.on('request', xml2json_converter);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment