mirror of
https://github.com/amark/gun.git
synced 2025-06-15 18:46:39 +00:00
51 lines
1.4 KiB
JavaScript
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() || '{}');
|
|
}
|
|
|
|
};
|