%PDF- %PDF-
Direktori : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/ |
Current File : /home/opti/workflow/node_modules/aws-sdk/lib/protocol/rest.js |
var util = require('../util'); function populateMethod(req) { req.httpRequest.method = req.service.api.operations[req.operation].httpMethod; } function populateURI(req) { var operation = req.service.api.operations[req.operation]; var input = operation.input; var uri = [req.httpRequest.endpoint.path, operation.httpPath].join('/'); uri = uri.replace(/\/+/g, '/'); var escapePathParamFn = req.service.escapePathParam || escapePathParam; var escapeQuerystringParamFn = req.service.escapeQuerystringParam || escapeQuerystringParam; var queryString = {}, queryStringSet = false; util.each(input.members, function (name, member) { var paramValue = req.params[name]; if (paramValue === null || paramValue === undefined) return; if (member.location === 'uri') { uri = uri.replace('{' + member.name + '}', escapePathParamFn(paramValue)); } else if (member.location === 'querystring') { queryStringSet = true; queryString[member.name] = escapeQuerystringParamFn(paramValue); } }); if (queryStringSet) { uri += (uri.indexOf('?') >= 0 ? '&' : '?'); var parts = []; util.arrayEach(Object.keys(queryString).sort(), function(key) { parts.push(escapeQuerystringParam(key) + '=' + queryString[key]); }); uri += parts.join('&'); } req.httpRequest.path = uri; } function escapePathParam(value) { return util.uriEscape(String(value)); } function escapeQuerystringParam(value) { return util.uriEscape(String(value)); } function populateHeaders(req) { var operation = req.service.api.operations[req.operation]; util.each(operation.input.members, function (name, member) { var value = req.params[name]; if (value === null || value === undefined) return; if (member.location === 'headers' && member.type === 'map') { util.each(value, function(key, value) { req.httpRequest.headers[member.name + key] = value; }); } else if (member.location === 'header') { value = member.toWireFormat(value).toString(); req.httpRequest.headers[member.name] = value; } }); } function buildRequest(req) { populateMethod(req); populateURI(req); populateHeaders(req); } function extractError() { } function extractData(resp) { var req = resp.request; var data = {}; var r = resp.httpResponse; var operation = req.service.api.operations[req.operation]; var output = operation.output; // normalize headers names to lower-cased keys for matching var headers = {}; util.each(r.headers, function (k, v) { headers[k.toLowerCase()] = v; }); util.each(output.members, function(name, member) { var header = (member.name || name).toLowerCase(); if (member.location === 'headers' && member.type === 'map') { data[name] = {}; util.each(r.headers, function (k, v) { var result = k.match(new RegExp('^' + member.name + '(.+)', 'i')); if (result !== null) { data[name][result[1]] = v; } }); } else if (member.location === 'header') { if (headers[header] !== undefined) { data[name] = headers[header]; } } else if (member.location === 'status') { data[name] = parseInt(r.statusCode, 10); } }); resp.data = data; } module.exports = { buildRequest: buildRequest, extractError: extractError, extractData: extractData };