/* * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ var apiGateway = apiGateway || {}; apiGateway.core = apiGateway.core || {}; apiGateway.core.simpleHttpClientFactory = {}; apiGateway.core.simpleHttpClientFactory.newClient = function (config) { function buildCanonicalQueryString(queryParams) { //Build a properly encoded query string from a QueryParam object if (Object.keys(queryParams).length < 1) { return ''; } var canonicalQueryString = ''; for (var property in queryParams) { if (queryParams.hasOwnProperty(property)) { canonicalQueryString += encodeURIComponent(property) + '=' + encodeURIComponent(queryParams[property]) + '&'; } } return canonicalQueryString.substr(0, canonicalQueryString.length - 1); } var simpleHttpClient = { }; simpleHttpClient.endpoint = apiGateway.core.utils.assertDefined(config.endpoint, 'endpoint'); simpleHttpClient.makeRequest = function (request) { var verb = apiGateway.core.utils.assertDefined(request.verb, 'verb'); var path = apiGateway.core.utils.assertDefined(request.path, 'path'); var queryParams = apiGateway.core.utils.copy(request.queryParams); if (queryParams === undefined) { queryParams = {}; } var headers = apiGateway.core.utils.copy(request.headers); if (headers === undefined) { headers = {}; } //If the user has not specified an override for Content type the use default if(headers['Content-Type'] === undefined) { headers['Content-Type'] = config.defaultContentType; } //If the user has not specified an override for Accept type the use default if(headers['Accept'] === undefined) { headers['Accept'] = config.defaultAcceptType; } var body = apiGateway.core.utils.copy(request.body); if (body === undefined) { body = ''; } var url = config.endpoint + path; var queryString = buildCanonicalQueryString(queryParams); if (queryString != '') { url += '?' + queryString; } var simpleHttpRequest = { method: verb, url: url, headers: headers, data: body }; return axios(simpleHttpRequest); }; return simpleHttpClient; };