UNPKG

@sourceloop/ctrl-plane-tenant-management-service

Version:

Tenant Management microservice for SaaS control plane

65 lines 2.45 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebhookController = void 0; const tslib_1 = require("tslib"); const rest_1 = require("@loopback/rest"); const core_1 = require("@sourceloop/core"); const loopback4_authorization_1 = require("loopback4-authorization"); const models_1 = require("../models"); const core_2 = require("@loopback/core"); const keys_1 = require("../keys"); const loopback4_ratelimiter_1 = require("loopback4-ratelimiter"); const basePath = '/webhook'; let WebhookController = class WebhookController { constructor(getHandlers) { this.getHandlers = getHandlers; } async webhook(dto) { const handlers = await this.getHandlers(); const handler = handlers.find(h => h.type === dto.type); if (handler) { await handler.handle(dto); } else { throw new rest_1.HttpErrors.UnprocessableEntity('Invalid type of webhook'); } } }; exports.WebhookController = WebhookController; tslib_1.__decorate([ (0, core_2.intercept)(keys_1.WEBHOOK_VERIFIER), (0, loopback4_ratelimiter_1.ratelimit)(true, { max: parseInt((_a = process.env.WEBHOOK_API_MAX_ATTEMPTS) !== null && _a !== void 0 ? _a : '10'), keyGenerator: core_1.rateLimitKeyGenPublic, }), (0, loopback4_authorization_1.authorize)({ permissions: ['*'], }), (0, rest_1.post)(`${basePath}`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [204 /* STATUS_CODE.NO_CONTENT */]: { description: 'Webhook success', }, }, }), tslib_1.__param(0, (0, rest_1.requestBody)({ content: { [core_1.CONTENT_TYPE.JSON]: { schema: (0, rest_1.getModelSchemaRef)(models_1.WebhookDTO, { title: 'WebhookDTO', }), }, }, })), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [models_1.WebhookDTO]), tslib_1.__metadata("design:returntype", Promise) ], WebhookController.prototype, "webhook", null); exports.WebhookController = WebhookController = tslib_1.__decorate([ (0, core_2.extensionPoint)(keys_1.WebhookHandlerEP.key), tslib_1.__param(0, (0, core_2.extensions)()), tslib_1.__metadata("design:paramtypes", [Function]) ], WebhookController); //# sourceMappingURL=webhook.controller.js.map