serverless/test/utils/api-gateway.js

57 lines
1.2 KiB
JavaScript

'use strict';
const _ = require('lodash');
const awsRequest = require('@serverless/test/aws-request');
const APIGatewayService = require('aws-sdk').APIGateway;
async function createRestApi(name) {
const params = {
name,
};
return awsRequest(APIGatewayService, 'createRestApi', params);
}
async function deleteRestApi(restApiId) {
const params = {
restApiId,
};
return awsRequest(APIGatewayService, 'deleteRestApi', params);
}
async function getResources(restApiId) {
const params = {
restApiId,
};
return awsRequest(APIGatewayService, 'getResources', params).then((data) => data.items);
}
async function findRestApis(name) {
const params = {
limit: 500,
};
async function recursiveFind(found, position) {
if (position) params.position = position;
return awsRequest(APIGatewayService, 'getRestApis', params).then((result) => {
const matches = result.items.filter((restApi) => restApi.name.match(name));
if (matches.length) {
_.merge(found, matches);
}
if (result.position) return recursiveFind(found, result.position);
return found;
});
}
return recursiveFind([]);
}
module.exports = {
createRestApi,
deleteRestApi,
getResources,
findRestApis,
};