aws-api-gateway-client
Version:
A module for AWS API Gateway client
117 lines (100 loc) • 14 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _urlTemplate = _interopRequireDefault(require("url-template"));
var _apiGatewayClient = _interopRequireDefault(require("./lib/apiGatewayCore/apiGatewayClient"));
/*
* 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 apigClientFactory = {};
var removeEmpty = function removeEmpty(obj) {
Object.keys(obj).forEach(function (key) {
return obj[key] && (0, _typeof2["default"])(obj[key]) === 'object' && removeEmpty(obj[key]) || obj[key] === undefined && delete obj[key];
});
return obj;
};
apigClientFactory.newClient = function () {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var apigClient = {};
config = Object.assign({
accessKey: '',
secretKey: '',
sessionToken: '',
region: '',
apiKey: '',
invokeUrl: '',
service: 'execute-api',
defaultContentType: 'application/json',
defaultAcceptType: 'application/json',
systemClockOffset: 0,
headers: {},
host: undefined
}, removeEmpty(config)); // extract endpoint and path from url
var invokeUrl = config.invokeUrl;
if (!invokeUrl) {
throw new Error("invokeUrl must be specified!");
}
var endpoint = /(^https?:\/\/[^/]+)/g.exec(invokeUrl)[1];
var pathComponent = invokeUrl.substring(endpoint.length);
var sigV4ClientConfig = {
accessKey: config.accessKey,
secretKey: config.secretKey,
sessionToken: config.sessionToken,
serviceName: config.service,
region: config.region,
endpoint: endpoint,
defaultContentType: config.defaultContentType,
defaultAcceptType: config.defaultAcceptType,
systemClockOffset: config.systemClockOffset,
retries: config.retries,
retryCondition: config.retryCondition,
retryDelay: config.retryDelay,
host: config.host
};
var authType = 'NONE';
if (sigV4ClientConfig.accessKey !== undefined && sigV4ClientConfig.accessKey !== '' && sigV4ClientConfig.secretKey !== undefined && sigV4ClientConfig.secretKey !== '') {
authType = 'AWS_IAM';
}
var simpleHttpClientConfig = {
endpoint: endpoint,
defaultContentType: config.defaultContentType,
defaultAcceptType: config.defaultAcceptType,
retries: config.retries,
retryCondition: config.retryCondition,
retryDelay: config.retryDelay,
headers: config.headers
};
var apiGatewayClient = _apiGatewayClient["default"].newClient(simpleHttpClientConfig, sigV4ClientConfig);
apigClient.invokeApi = function (params, pathTemplate, method, additionalParams, body) {
if (additionalParams === undefined) additionalParams = {};
if (body === undefined) body = '';
var request = {
verb: method.toUpperCase(),
path: pathComponent + _urlTemplate["default"].parse(pathTemplate).expand(params),
headers: additionalParams.headers || {},
timeout: additionalParams.timeout || 0,
queryParams: additionalParams.queryParams,
body: body
};
return apiGatewayClient.makeRequest(request, authType, additionalParams, config.apiKey);
};
return apigClient;
};
var _default = apigClientFactory;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGlnQ2xpZW50LmpzIl0sIm5hbWVzIjpbImFwaWdDbGllbnRGYWN0b3J5IiwicmVtb3ZlRW1wdHkiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInVuZGVmaW5lZCIsIm5ld0NsaWVudCIsImNvbmZpZyIsImFwaWdDbGllbnQiLCJhc3NpZ24iLCJhY2Nlc3NLZXkiLCJzZWNyZXRLZXkiLCJzZXNzaW9uVG9rZW4iLCJyZWdpb24iLCJhcGlLZXkiLCJpbnZva2VVcmwiLCJzZXJ2aWNlIiwiZGVmYXVsdENvbnRlbnRUeXBlIiwiZGVmYXVsdEFjY2VwdFR5cGUiLCJzeXN0ZW1DbG9ja09mZnNldCIsImhlYWRlcnMiLCJob3N0IiwiRXJyb3IiLCJlbmRwb2ludCIsImV4ZWMiLCJwYXRoQ29tcG9uZW50Iiwic3Vic3RyaW5nIiwibGVuZ3RoIiwic2lnVjRDbGllbnRDb25maWciLCJzZXJ2aWNlTmFtZSIsInJldHJpZXMiLCJyZXRyeUNvbmRpdGlvbiIsInJldHJ5RGVsYXkiLCJhdXRoVHlwZSIsInNpbXBsZUh0dHBDbGllbnRDb25maWciLCJhcGlHYXRld2F5Q2xpZW50IiwiYXBpR2F0ZXdheUNsaWVudEZhY3RvcnkiLCJpbnZva2VBcGkiLCJwYXJhbXMiLCJwYXRoVGVtcGxhdGUiLCJtZXRob2QiLCJhZGRpdGlvbmFsUGFyYW1zIiwiYm9keSIsInJlcXVlc3QiLCJ2ZXJiIiwidG9VcHBlckNhc2UiLCJwYXRoIiwidXJpdGVtcGxhdGUiLCJwYXJzZSIsImV4cGFuZCIsInRpbWVvdXQiLCJxdWVyeVBhcmFtcyIsIm1ha2VSZXF1ZXN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWVBOztBQUNBOztBQWhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0EsSUFBTUEsaUJBQWlCLEdBQUcsRUFBMUI7O0FBRUEsSUFBTUMsV0FBVyxHQUFHLFNBQWRB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QUh6QjtBQUlaOEIsTUFBQUEsT0FBTyxFQUFFVCxnQkFBZ0IsQ0FBQ1MsT0FBakIsSUFBNEIsQ0FKekI7QUFLWkMsTUFBQUEsV0FBVyxFQUFFVixnQkFBZ0IsQ0FBQ1UsV0FMbEI7QUFNWlQsTUFBQUEsSUFBSSxFQUFFQTtBQU5NLEtBQWhCO0FBU0EsV0FBT1AsZ0JBQWdCLENBQUNpQixXQUFqQixDQUE2QlQsT0FBN0IsRUFBc0NWLFFBQXRDLEVBQWdEUSxnQkFBaEQsRUFBa0VsQyxNQUFNLENBQUNPLE1BQXpFLENBQVA7QUFDRCxHQWREOztBQWdCQSxTQUFPTixVQUFQO0FBQ0QsQ0FyRkQ7O2VBdUZlVixpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxMC0yMDE2IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS5cbiAqIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9hcGFjaGUyLjBcbiAqXG4gKiBvciBpbiB0aGUgXCJsaWNlbnNlXCIgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAqIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlclxuICogZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmdcbiAqIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgdXJpdGVtcGxhdGUgZnJvbSAndXJsLXRlbXBsYXRlJztcbmltcG9ydCBhcGlHYXRld2F5Q2xpZW50RmFjdG9yeSBmcm9tICcuL2xpYi9hcGlHYXRld2F5Q29yZS9hcGlHYXRld2F5Q2xpZW50JztcblxuY29uc3QgYXBpZ0NsaWVudEZhY3RvcnkgPSB7fTtcblxuY29uc3QgcmVtb3ZlRW1wdHkgPSAob2JqKSA9PiB7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PlxuICAgIChvYmpba2V5XSAmJiB0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnKSAmJiByZW1vdmVFbXB0eShvYmpba2V5XSlcbiAgICB8fCAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkgJiYgZGVsZXRlIG9ialtrZXldXG4gICk7XG4gIHJldHVybiBvYmo7XG59O1xuXG5hcGlnQ2xpZW50RmFjdG9yeS5uZXdDbGllbnQgPSAoY29uZmlnID0ge30pID0+IHtcbiAgY29uc3QgYXBpZ0NsaWVudCA9IHt9O1xuXG4gIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIGFjY2Vzc0tleTogJycsXG4gICAgc2VjcmV0S2V5OiAnJyxcbiAgICBzZXNzaW9uVG9rZW46ICcnLFxuICAgIHJlZ2lvbjogJycsXG4gICAgYXBpS2V5OiAnJyxcbiAgICBpbnZva2VVcmw6ICcnLFxuICAgIHNlcnZpY2U6ICdleGVjdXRlLWFwaScsXG4gICAgZGVmYXVsdENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgZGVmYXVsdEFjY2VwdFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICBzeXN0ZW1DbG9ja09mZnNldDogMCxcbiAgICBoZWFkZXJzOiB7fSxcbiAgICBob3N0OiB1bmRlZmluZWQsXG4gIH0sIHJlbW92ZUVtcHR5KGNvbmZpZykpO1xuXG4gIC8vIGV4dHJhY3QgZW5kcG9pbnQgYW5kIHBhdGggZnJvbSB1cmxcbiAgY29uc3QgaW52b2tlVXJsID0gY29uZmlnLmludm9rZVVybDtcbiAgaWYgKCFpbnZva2VVcmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZva2VVcmwgbXVzdCBiZSBzcGVjaWZpZWQhXCIpO1xuICB9XG5cbiAgY29uc3QgZW5kcG9pbnQgPSAvKF5odHRwcz86XFwvXFwvW14vXSspL2cuZXhlYyhpbnZva2VVcmwpWzFdO1xuICBjb25zdCBwYXRoQ29tcG9uZW50ID0gaW52b2tlVXJsLnN1YnN0cmluZyhlbmRwb2ludC5sZW5ndGgpO1xuXG4gIGNvbnN0IHNpZ1Y0Q2xpZW50Q29uZmlnID0ge1xuICAgIGFjY2Vzc0tleTogY29uZmlnLmFjY2Vzc0tleSxcbiAgICBzZWNyZXRLZXk6IGNvbmZpZy5zZWNyZXRLZXksXG4gICAgc2Vzc2lvblRva2VuOiBjb25maWcuc2Vzc2lvblRva2VuLFxuICAgIHNlcnZpY2VOYW1lOiBjb25maWcuc2VydmljZSxcbiAgICByZWdpb246IGNvbmZpZy5yZWdpb24sXG4gICAgZW5kcG9pbnQ6IGVuZHBvaW50LFxuICAgIGRlZmF1bHRDb250ZW50VHlwZTogY29uZmlnLmRlZmF1bHRDb250ZW50VHlwZSxcbiAgICBkZWZhdWx0QWNjZXB0VHlwZTogY29uZmlnLmRlZmF1bHRBY2NlcHRUeXBlLFxuICAgIHN5c3RlbUNsb2NrT2Zmc2V0OiBjb25maWcuc3lzdGVtQ2xvY2tPZmZzZXQsXG4gICAgcmV0cmllczogY29uZmlnLnJldHJpZXMsXG4gICAgcmV0cnlDb25kaXRpb246IGNvbmZpZy5yZXRyeUNvbmRpdGlvbixcbiAgICByZXRyeURlbGF5OiBjb25maWcucmV0cnlEZWxheSxcbiAgICBob3N0OiBjb25maWcuaG9zdCxcbiAgfTtcblxuICBsZXQgYXV0aFR5cGUgPSAnTk9ORSc7XG4gIGlmIChcbiAgICBzaWdWNENsaWVudENvbmZpZy5hY2Nlc3NLZXkgIT09IHVuZGVmaW5lZFxuICAgICYmIHNpZ1Y0Q2xpZW50Q29uZmlnLmFjY2Vzc0tleSAhPT0gJydcbiAgICAmJiBzaWdWNENsaWVudENvbmZpZy5zZWNyZXRLZXkgIT09IHVuZGVmaW5lZFxuICAgICYmIHNpZ1Y0Q2xpZW50Q29uZmlnLnNlY3JldEtleSAhPT0gJydcbiAgKSB7XG4gICAgICBhdXRoVHlwZSA9ICdBV1NfSUFNJztcbiAgfVxuXG4gIGNvbnN0IHNpbXBsZUh0dHBDbGllbnRDb25maWcgPSB7XG4gICAgZW5kcG9pbnQ6IGVuZHBvaW50LFxuICAgIGRlZmF1bHRDb250ZW50VHlwZTogY29uZmlnLmRlZmF1bHRDb250ZW50VHlwZSxcbiAgICBkZWZhdWx0QWNjZXB0VHlwZTogY29uZmlnLmRlZmF1bHRBY2NlcHRUeXBlLFxuICAgIHJldHJpZXM6IGNvbmZpZy5yZXRyaWVzLFxuICAgIHJldHJ5Q29uZGl0aW9uOiBjb25maWcucmV0cnlDb25kaXRpb24sXG4gICAgcmV0cnlEZWxheTogY29uZmlnLnJldHJ5RGVsYXksXG4gICAgaGVhZGVyczogY29uZmlnLmhlYWRlcnMsXG4gIH07XG5cbiAgY29uc3QgYXBpR2F0ZXdheUNsaWVudCA9IGFwaUdhdGV3YXlDbGllbnRGYWN0b3J5Lm5ld0NsaWVudChcbiAgICBzaW1wbGVIdHRwQ2xpZW50Q29uZmlnLFxuICAgIHNpZ1Y0Q2xpZW50Q29uZmlnXG4gICk7XG5cbiAgYXBpZ0NsaWVudC5pbnZva2VBcGkgPSAocGFyYW1zLCBwYXRoVGVtcGxhdGUsIG1ldGhvZCwgYWRkaXRpb25hbFBhcmFtcywgYm9keSkgPT4ge1xuICAgIGlmIChhZGRpdGlvbmFsUGFyYW1zPT09dW5kZWZpbmVkKSBhZGRpdGlvbmFsUGFyYW1zPXt9O1xuICAgIGlmIChib2R5PT09dW5kZWZpbmVkKSBib2R5PScnO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgdmVyYjogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIHBhdGg6IHBhdGhDb21wb25lbnQgKyB1cml0ZW1wbGF0ZS5wYXJzZShwYXRoVGVtcGxhdGUpLmV4cGFuZChwYXJhbXMpLFxuICAgICAgICBoZWFkZXJzOiBhZGRpdGlvbmFsUGFyYW1zLmhlYWRlcnMgfHwge30sXG4gICAgICAgIHRpbWVvdXQ6IGFkZGl0aW9uYWxQYXJhbXMudGltZW91dCB8fCAwLFxuICAgICAgICBxdWVyeVBhcmFtczogYWRkaXRpb25hbFBhcmFtcy5xdWVyeVBhcmFtcyxcbiAgICAgICAgYm9keTogYm9keVxuICAgIH07XG5cbiAgICByZXR1cm4gYXBpR2F0ZXdheUNsaWVudC5tYWtlUmVxdWVzdChyZXF1ZXN0LCBhdXRoVHlwZSwgYWRkaXRpb25hbFBhcmFtcywgY29uZmlnLmFwaUtleSk7XG4gIH07XG5cbiAgcmV0dXJuIGFwaWdDbGllbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhcGlnQ2xpZW50RmFjdG9yeTtcbiJdfQ==
;