@aws-cdk/integ-tests-alpha
Version:
CDK Integration Testing Constructs
42 lines • 5.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpHandler = void 0;
/* eslint-disable import/no-extraneous-dependencies */
/* eslint-disable no-console */
const aws_custom_resource_sdk_adapter_1 = require("@aws-cdk/aws-custom-resource-sdk-adapter");
const node_fetch_1 = require("node-fetch");
// TODO: can use builtin fetch on node18
const base_1 = require("./base");
const utils_1 = require("./utils");
class HttpHandler extends base_1.CustomResourceHandler {
async processEvent(request) {
console.log('request', request);
const response = await (0, node_fetch_1.default)(request.parameters.url, request.parameters.fetchOptions);
const result = {
ok: response.ok,
status: response.status,
statusText: response.statusText,
headers: response.headers.raw(),
};
result.body = await response.text();
try {
result.body = JSON.parse(result.body);
}
catch (e) {
// Okay
}
let resp;
if (request.flattenResponse === 'true') {
// Flatten and explode JSON fields
resp = (0, aws_custom_resource_sdk_adapter_1.flatten)((0, utils_1.deepParseJson)({ apiCallResponse: result }));
}
else {
// Otherwise just return the response as-is, without exploding JSON fields
resp = { apiCallResponse: result };
}
console.log(`Returning result ${JSON.stringify(resp)}`);
return resp;
}
}
exports.HttpHandler = HttpHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQXNEO0FBQ3RELCtCQUErQjtBQUMvQiw4RkFBbUU7QUFFbkUsMkNBQStCO0FBQy9CLHdDQUF3QztBQUN4QyxpQ0FBK0M7QUFFL0MsbUNBQXdDO0FBRXhDLE1BQWEsV0FBWSxTQUFRLDRCQUFvRjtJQUN6RyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQW9CO1FBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFhLE1BQU0sSUFBQSxvQkFBSyxFQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEcsTUFBTSxNQUFNLEdBQVE7WUFDbEIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3ZCLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7U0FDaEMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFzRCxDQUFDO1FBQzNELElBQUksT0FBTyxDQUFDLGVBQWUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxrQ0FBa0M7WUFDbEMsSUFBSSxHQUFHLElBQUEseUNBQU8sRUFBQyxJQUFBLHFCQUFhLEVBQUMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ04sMEVBQTBFO1lBQzFFLElBQUksR0FBRyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEQsT0FBTyxJQUFJLENBQUM7S0FDYjtDQUNGO0FBOUJELGtDQThCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jdXN0b20tcmVzb3VyY2Utc2RrLWFkYXB0ZXInO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zZSB9IGZyb20gJ25vZGUtZmV0Y2gnO1xuaW1wb3J0IGZldGNoIGZyb20gJ25vZGUtZmV0Y2gnO1xuLy8gVE9ETzogY2FuIHVzZSBidWlsdGluIGZldGNoIG9uIG5vZGUxOFxuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB0eXBlIHsgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZVdyYXBwZXIgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlZXBQYXJzZUpzb24gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEh0dHBIYW5kbGVyIGV4dGVuZHMgQ3VzdG9tUmVzb3VyY2VIYW5kbGVyPEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2VXcmFwcGVyIHwgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+IHtcbiAgcHJvdGVjdGVkIGFzeW5jIHByb2Nlc3NFdmVudChyZXF1ZXN0OiBIdHRwUmVxdWVzdCk6IFByb21pc2U8SHR0cFJlc3BvbnNlV3JhcHBlciB8IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9PiB7XG4gICAgY29uc29sZS5sb2coJ3JlcXVlc3QnLCByZXF1ZXN0KTtcbiAgICBjb25zdCByZXNwb25zZTogUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0LnBhcmFtZXRlcnMudXJsLCByZXF1ZXN0LnBhcmFtZXRlcnMuZmV0Y2hPcHRpb25zKTtcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgIG9rOiByZXNwb25zZS5vayxcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMucmF3KCksXG4gICAgfTtcblxuICAgIHJlc3VsdC5ib2R5ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQuYm9keSA9IEpTT04ucGFyc2UocmVzdWx0LmJvZHkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIE9rYXlcbiAgICB9XG5cbiAgICBsZXQgcmVzcDogSHR0cFJlc3BvbnNlV3JhcHBlciB8IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIGlmIChyZXF1ZXN0LmZsYXR0ZW5SZXNwb25zZSA9PT0gJ3RydWUnKSB7XG4gICAgICAvLyBGbGF0dGVuIGFuZCBleHBsb2RlIEpTT04gZmllbGRzXG4gICAgICByZXNwID0gZmxhdHRlbihkZWVwUGFyc2VKc29uKHsgYXBpQ2FsbFJlc3BvbnNlOiByZXN1bHQgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UganVzdCByZXR1cm4gdGhlIHJlc3BvbnNlIGFzLWlzLCB3aXRob3V0IGV4cGxvZGluZyBKU09OIGZpZWxkc1xuICAgICAgcmVzcCA9IHsgYXBpQ2FsbFJlc3BvbnNlOiByZXN1bHQgfTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYFJldHVybmluZyByZXN1bHQgJHtKU09OLnN0cmluZ2lmeShyZXNwKX1gKTtcblxuICAgIHJldHVybiByZXNwO1xuICB9XG59XG4iXX0=