UNPKG

@ebonydevcopy/framework

Version:

A module-based NodeJS chatbot framework.

61 lines 2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /** * ebony-framework * * @module routers/PostbackRouter * @author Christos Panagiotakopoulos <chrispanag@gmail.com> * @copyright Copyright(c) 2020 Christos Panagiotakopoulos * @license MIT * */ const BasicRouter_1 = __importDefault(require("./BasicRouter")); /** * A Postback Router */ class PostbackRouter { constructor() { this.stringPayloadRoutes = new BasicRouter_1.default(); this.objectPayloadRoutes = new BasicRouter_1.default(); } /** * Add routes to the bot */ importRoutes({ stringPayloads = {}, objectPayloads = {} }) { this.stringPayloadRoutes.importRoutes(stringPayloads); this.objectPayloadRoutes.importRoutes(objectPayloads); } // Router Methods stringPayloadHandler(payload, user) { const func = this.stringPayloadRoutes.getRoute(payload); if (func) { return func(user); } return this.objectPayloadHandler(payload, user); } objectPayloadHandler(payload, user) { try { const parsedPayload = JSON.parse(payload); const func = this.objectPayloadRoutes.getRoute(parsedPayload.type); if (func) { return func(user, parsedPayload); } const defaultFunc = this.objectPayloadRoutes.getRoute('default'); if (defaultFunc) { return defaultFunc(user, parsedPayload); } throw new Error(`Unknown payload: ${payload}`); } catch (err) { if (err instanceof SyntaxError) { throw new Error(`[objectPayloadHandler] Payload: ${payload} is not JSON`); } throw err; } } } exports.default = PostbackRouter; //# sourceMappingURL=PostbackRouter.js.map