2014-04-01 00:47:41 -06:00

51 lines
1.4 KiB
JavaScript

var AWS = require('../core');
require('../json/builder');
/**
* @api private
*/
AWS.ServiceInterface.Json = {
buildRequest: function buildRequest(req) {
var httpRequest = req.httpRequest;
var api = req.service.api;
var target = api.targetPrefix + '.' + api.operations[req.operation].name;
var version = api.jsonVersion || '1.0';
var rules = api.operations[req.operation].input;
var builder = new AWS.JSON.Builder(rules, api);
httpRequest.body = builder.build(req.params || {});
httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;
httpRequest.headers['X-Amz-Target'] = target;
},
extractError: function extractError(resp) {
var error = {};
var httpResponse = resp.httpResponse;
if (httpResponse.body.length > 0) {
var e = JSON.parse(httpResponse.body.toString());
if (e.__type || e.code) {
error.code = (e.__type || e.code).split('#').pop();
} else {
error.code = 'UnknownError';
}
if (error.code === 'RequestEntityTooLarge') {
error.message = 'Request body must be less than 1 MB';
} else {
error.message = (e.message || e.Message || null);
}
} else {
error.code = httpResponse.statusCode;
error.message = null;
}
resp.error = AWS.util.error(new Error(), error);
},
extractData: function extractData(resp) {
resp.data = JSON.parse(resp.httpResponse.body.toString() || '{}');
}
};