@ebonydevcopy/framework
Version:
A module-based NodeJS chatbot framework.
61 lines • 2 kB
JavaScript
;
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