%PDF- %PDF-
Direktori : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/ |
Current File : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/query.js |
var AWS = require('../core'); var util = require('../util'); var QueryParamSerializer = require('../query/query_param_serializer'); var Shape = require('../model/shape'); function buildRequest(req) { var operation = req.service.api.operations[req.operation]; var httpRequest = req.httpRequest; httpRequest.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; httpRequest.params = { Version: req.service.api.apiVersion, Action: operation.name }; // convert the request parameters into a list of query params, // e.g. Deeply.NestedParam.0.Name=value var builder = new QueryParamSerializer(); builder.serialize(req.params, operation.input, function(name, value) { httpRequest.params[name] = value; }); httpRequest.body = util.queryParamsToString(httpRequest.params); } function extractError(resp) { var data, body = resp.httpResponse.body.toString(); if (body.match('<UnknownOperationException')) { data = { Code: 'UnknownOperation', Message: 'Unknown operation ' + resp.request.operation }; } else { data = new AWS.XML.Parser().parse(body); } if (data.Errors) data = data.Errors; if (data.Error) data = data.Error; if (data.Code) { resp.error = util.error(new Error(), { code: data.Code, message: data.Message }); } else { resp.error = util.error(new Error(), { code: resp.httpResponse.statusCode, message: null }); } } function extractData(resp) { var req = resp.request; var operation = req.service.api.operations[req.operation]; var shape = operation.output || {}; var origRules = shape; if (origRules.resultWrapper) { var tmp = Shape.create({type: 'structure'}); tmp.members[origRules.resultWrapper] = shape; tmp.memberNames = [origRules.resultWrapper]; util.property(shape, 'name', shape.resultWrapper); shape = tmp; } var parser = new AWS.XML.Parser(); var data = parser.parse(resp.httpResponse.body.toString(), shape); if (origRules.resultWrapper) { if (data[origRules.resultWrapper]) { util.update(data, data[origRules.resultWrapper]); delete data[origRules.resultWrapper]; } } resp.data = data; } module.exports = { buildRequest: buildRequest, extractError: extractError, extractData: extractData };