in lambdas/catalog-updater/index.js [189:243]
async function handler (event, context) {
console.log(`event: ${inspectStringify(event)}`)
bucketName = process.env.BucketName
const sdkGeneration = JSON.parse(
(await exports.s3.getObject({ Bucket: bucketName, Key: 'sdkGeneration.json', ExpectedBucketOwner: process.env.SourceAccount }).promise())
.Body.toString()
)
console.log(`sdkGeneration: ${inspectStringify(sdkGeneration)}`)
const usagePlansPromise = getAllUsagePlans(exports.apiGateway)
const builderPromise = usagePlansPromise.then(usagePlans => {
console.log(`usagePlans: ${inspectStringify(usagePlans)}`)
return new CatalogBuilder(usagePlans, sdkGeneration)
})
const promises = []
let token
while (true) {
const listObjectsResult = await exports.s3.listObjectsV2(
token != null
? { Bucket: bucketName, Prefix: 'catalog/', ContinuationToken: token, ExpectedBucketOwner: process.env.SourceAccount }
: { Bucket: bucketName, Prefix: 'catalog/', ExpectedBucketOwner: process.env.SourceAccount }
).promise()
for (const file of listObjectsResult.Contents) {
if (exports.swaggerFileFilter(file)) {
promises.push(
builderPromise.then(builder =>
exports.getSwaggerFile(file).then(s => builder.addToCatalog(s))
)
)
}
}
if (!listObjectsResult.IsTruncated) break
token = listObjectsResult.NextContinuationToken
}
await Promise.all(promises)
const { catalog } = await builderPromise
console.log(`catalog: ${inspectStringify(catalog)}`)
const params = {
Bucket: bucketName,
Key: 'catalog.json',
Body: JSON.stringify(catalog),
ContentType: 'application/json',
ExpectedBucketOwner: process.env.SourceAccount
}
await exports.s3.upload(params).promise()
}