serverless/test/utils/api-gateway.js
2024-05-29 11:51:04 -04:00

63 lines
1.3 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,
}