aliyun-sdk
Version:
Aliyun SDK for JavaScript
50 lines (41 loc) • 1.39 kB
JavaScript
var ALY = require('../core');
require('../json/builder');
/**
* @api private
*/
ALY.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 ALY.JSON.Builder(rules, api);
httpRequest.path = '/';
httpRequest.body = builder.build(req.params || {});
},
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 || e.Code) {
error.code = (e.__type || e.code || 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 = ALY.util.error(new Error(), error);
},
extractData: function extractData(resp) {
resp.data = JSON.parse(resp.httpResponse.body.toString() || '{}');
}
};