%PDF- %PDF-
| Direktori : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/ |
| Current File : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/rest_xml.js |
var AWS = require('../core');
var util = require('../util');
var Rest = require('./rest');
function populateBody(req) {
var input = req.service.api.operations[req.operation].input;
var builder = new AWS.XML.Builder();
var params = req.params;
var payload = input.payload;
if (payload) {
var payloadMember = input.members[payload];
params = params[payload];
if (params === undefined) return;
if (payloadMember.type === 'structure') {
var rootElement = payloadMember.name;
req.httpRequest.body = builder.toXML(params, payloadMember, rootElement);
} else { // non-xml payload
req.httpRequest.body = params;
}
} else {
req.httpRequest.body = builder.toXML(params, input, input.shape ||
util.string.upperFirst(req.operation) + 'Request');
}
}
function buildRequest(req) {
Rest.buildRequest(req);
populateBody(req);
}
function extractError(resp) {
Rest.extractError(resp);
var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());
if (data.Errors) data = data.Errors;
if (data.Error) data = data.Error;
if (data.Code) {
resp.error = util.error(new Error(), {
code: data.Code,
message: data.Message
});
} else {
resp.error = util.error(new Error(), {
code: resp.httpResponse.statusCode,
message: null
});
}
}
function extractData(resp) {
Rest.extractData(resp);
var parser;
var req = resp.request;
var body = resp.httpResponse.body;
var operation = req.service.api.operations[req.operation];
var output = operation.output;
var payload = output.payload;
if (payload) {
var payloadMember = output.members[payload];
if (payloadMember.isStreaming) {
resp.data[payload] = body;
} else if (payloadMember.type === 'structure') {
parser = new AWS.XML.Parser();
util.update(resp.data, parser.parse(body.toString(), payloadMember));
} else {
resp.data[payload] = body.toString();
}
} else if (body.length > 0) {
parser = new AWS.XML.Parser();
var data = parser.parse(body.toString(), output);
util.update(resp.data, data);
}
}
module.exports = {
buildRequest: buildRequest,
extractError: extractError,
extractData: extractData
};