UNPKG

@wisegpt/awscdk-slack-event-bus

Version:

Exposes a Slack Events API Request URL that validates and sends all received events to an AWS Event Bus

43 lines 6.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = exports.SlackHandlerLambda = void 0; const base_lambda_1 = require("./base-lambda"); const slack_event_bus_service_1 = require("../internal/event-bus/slack-event-bus.service"); const slack_event_handler_service_1 = require("../internal/handlers/slack-event-handler.service"); const slack_service_1 = require("../internal/slack/slack.service"); const path_constants_1 = require("../path-constants"); const DEFAULT_HEADERS = { "content-type": "application/json", }; const globalSlackEventBusService = new slack_event_bus_service_1.SlackEventBusService(); const globalSlackService = new slack_service_1.SlackService(); class SlackHandlerLambda extends base_lambda_1.BaseLambda { constructor(slackEventHandlerService = new slack_event_handler_service_1.SlackEventHandlerService(globalSlackEventBusService, globalSlackService)) { super(); this.slackEventHandlerService = slackEventHandlerService; } async handle(event) { const appId = event.pathParameters?.appId ?? process.env.SLACK_APP_ID; if (appId === undefined) { throw new Error("{appId} is undefined, make sure the url includes {appId} path parameter"); } const result = await this.handleByPath({ appId }, event); return { ...result, headers: { ...DEFAULT_HEADERS, ...result.headers, }, }; } async handleByPath(handlerContext, event) { const path = event.requestContext.http.path; if (path.endsWith(path_constants_1.SLACK_PATH_EVENTS_API)) { return this.slackEventHandlerService.handle(handlerContext, event); } throw new Error(`unknown path: '${path}'`); } } exports.SlackHandlerLambda = SlackHandlerLambda; exports.handler = base_lambda_1.createLambdaHandler(new SlackHandlerLambda()); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2staGFuZGxlci5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFtYmRhcy9zbGFjay1oYW5kbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrQ0FBZ0U7QUFDaEUsMkZBQXFGO0FBRXJGLGtHQUE0RjtBQUM1RixtRUFBK0Q7QUFDL0Qsc0RBQTBEO0FBRTFELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGNBQWMsRUFBRSxrQkFBa0I7Q0FDbkMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSw4Q0FBb0IsRUFBRSxDQUFDO0FBQzlELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSw0QkFBWSxFQUFFLENBQUM7QUFFOUMsTUFBYSxrQkFBbUIsU0FBUSx3QkFBVTtJQUNoRCxZQUNtQiwyQkFBcUQsSUFBSSxzREFBd0IsQ0FDaEcsMEJBQTBCLEVBQzFCLGtCQUFrQixDQUNuQjtRQUVELEtBQUssRUFBRSxDQUFDO1FBTFMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUd4QztJQUdILENBQUM7SUFFUyxLQUFLLENBQUMsTUFBTSxDQUNwQixLQUFvQztRQUVwQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUN0RSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FDYix5RUFBeUUsQ0FDMUUsQ0FBQztTQUNIO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekQsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULE9BQU8sRUFBRTtnQkFDUCxHQUFHLGVBQWU7Z0JBQ2xCLEdBQUcsTUFBTSxDQUFDLE9BQU87YUFDbEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQ3hCLGNBQThCLEVBQzlCLEtBQW9DO1FBRXBDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsc0NBQXFCLENBQUMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUExQ0QsZ0RBMENDO0FBRVksUUFBQSxPQUFPLEdBQUcsaUNBQW1CLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIExhbWJkYSBmcm9tIFwiYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQmFzZUxhbWJkYSwgY3JlYXRlTGFtYmRhSGFuZGxlciB9IGZyb20gXCIuL2Jhc2UtbGFtYmRhXCI7XG5pbXBvcnQgeyBTbGFja0V2ZW50QnVzU2VydmljZSB9IGZyb20gXCIuLi9pbnRlcm5hbC9ldmVudC1idXMvc2xhY2stZXZlbnQtYnVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEhhbmRsZXJDb250ZXh0IH0gZnJvbSBcIi4uL2ludGVybmFsL2hhbmRsZXJzL2hhbmRsZXJzLmR0b1wiO1xuaW1wb3J0IHsgU2xhY2tFdmVudEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2ludGVybmFsL2hhbmRsZXJzL3NsYWNrLWV2ZW50LWhhbmRsZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgU2xhY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL2ludGVybmFsL3NsYWNrL3NsYWNrLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNMQUNLX1BBVEhfRVZFTlRTX0FQSSB9IGZyb20gXCIuLi9wYXRoLWNvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlMgPSB7XG4gIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxufTtcblxuY29uc3QgZ2xvYmFsU2xhY2tFdmVudEJ1c1NlcnZpY2UgPSBuZXcgU2xhY2tFdmVudEJ1c1NlcnZpY2UoKTtcbmNvbnN0IGdsb2JhbFNsYWNrU2VydmljZSA9IG5ldyBTbGFja1NlcnZpY2UoKTtcblxuZXhwb3J0IGNsYXNzIFNsYWNrSGFuZGxlckxhbWJkYSBleHRlbmRzIEJhc2VMYW1iZGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNsYWNrRXZlbnRIYW5kbGVyU2VydmljZTogU2xhY2tFdmVudEhhbmRsZXJTZXJ2aWNlID0gbmV3IFNsYWNrRXZlbnRIYW5kbGVyU2VydmljZShcbiAgICAgIGdsb2JhbFNsYWNrRXZlbnRCdXNTZXJ2aWNlLFxuICAgICAgZ2xvYmFsU2xhY2tTZXJ2aWNlXG4gICAgKVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZShcbiAgICBldmVudDogTGFtYmRhLkFQSUdhdGV3YXlQcm94eUV2ZW50VjJcbiAgKTogUHJvbWlzZTxMYW1iZGEuQVBJR2F0ZXdheVByb3h5UmVzdWx0VjI+IHtcbiAgICBjb25zdCBhcHBJZCA9IGV2ZW50LnBhdGhQYXJhbWV0ZXJzPy5hcHBJZCA/PyBwcm9jZXNzLmVudi5TTEFDS19BUFBfSUQ7XG4gICAgaWYgKGFwcElkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJ7YXBwSWR9IGlzIHVuZGVmaW5lZCwgbWFrZSBzdXJlIHRoZSB1cmwgaW5jbHVkZXMge2FwcElkfSBwYXRoIHBhcmFtZXRlclwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaGFuZGxlQnlQYXRoKHsgYXBwSWQgfSwgZXZlbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3VsdCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLi4uREVGQVVMVF9IRUFERVJTLFxuICAgICAgICAuLi5yZXN1bHQuaGVhZGVycyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlQnlQYXRoKFxuICAgIGhhbmRsZXJDb250ZXh0OiBIYW5kbGVyQ29udGV4dCxcbiAgICBldmVudDogTGFtYmRhLkFQSUdhdGV3YXlQcm94eUV2ZW50VjJcbiAgKTogUHJvbWlzZTxMYW1iZGEuQVBJR2F0ZXdheVByb3h5U3RydWN0dXJlZFJlc3VsdFYyPiB7XG4gICAgY29uc3QgcGF0aCA9IGV2ZW50LnJlcXVlc3RDb250ZXh0Lmh0dHAucGF0aDtcbiAgICBpZiAocGF0aC5lbmRzV2l0aChTTEFDS19QQVRIX0VWRU5UU19BUEkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zbGFja0V2ZW50SGFuZGxlclNlcnZpY2UuaGFuZGxlKGhhbmRsZXJDb250ZXh0LCBldmVudCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHBhdGg6ICcke3BhdGh9J2ApO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gY3JlYXRlTGFtYmRhSGFuZGxlcihuZXcgU2xhY2tIYW5kbGVyTGFtYmRhKCkpO1xuIl19