@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
JavaScript
;
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