UNPKG

aliyun-sdk

Version:
50 lines (41 loc) 1.39 kB
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() || '{}'); } };