%PDF- %PDF-
| Direktori : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/ |
| Current File : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/rest_json.js |
var util = require('../util');
var Rest = require('./rest');
var Json = require('./json');
var JsonBuilder = require('../json/builder');
function populateBody(req) {
var builder = new JsonBuilder();
var input = req.service.api.operations[req.operation].input;
if (input.payload) {
var params = {};
var payloadShape = input.members[input.payload];
params = req.params[input.payload];
if (params === undefined) return;
if (payloadShape.type === 'structure') {
req.httpRequest.body = builder.build(params, payloadShape);
} else { // non-JSON payload
req.httpRequest.body = params;
}
} else {
req.httpRequest.body = builder.build(req.params, input);
}
}
function buildRequest(req) {
Rest.buildRequest(req);
populateBody(req);
}
function extractError(resp) {
Json.extractError(resp);
}
function extractData(resp) {
Rest.extractData(resp);
var req = resp.request;
var rules = req.service.api.operations[req.operation].output || {};
if (rules.payload) {
var payloadMember = rules.members[rules.payload];
if (payloadMember.isStreaming) {
resp.data[rules.payload] = resp.httpResponse.body;
} else if (payloadMember.type === 'structure') {
Json.extractData(resp);
} else {
resp.data[rules.payload] = resp.httpResponse.body.toString();
}
} else {
var data = resp.data;
Json.extractData(resp);
resp.data = util.merge(data, resp.data);
}
}
module.exports = {
buildRequest: buildRequest,
extractError: extractError,
extractData: extractData
};