viber-bot
Version:
A bot interface to work with Viber API
38 lines (29 loc) • 1.42 kB
JavaScript
;
const _ = require('underscore');
const TextMessage = require(__dirname + '/text-message');
const UrlMessage = require(__dirname + '/url-message');
const ContactMessage = require(__dirname + '/contact-message');
const FileMessage = require(__dirname + '/file-message');
const LocationMessage = require(__dirname + '/location-message');
const PictureMessage = require(__dirname + '/picture-message');
const VideoMessage = require(__dirname + '/video-message');
const StickerMessage = require(__dirname + '/sticker-message');
const RichMediaMessage = require(__dirname + '/rich-media-message');
const SUPPORTED_MESSAGE_TYPES = [TextMessage, UrlMessage, ContactMessage,
FileMessage, LocationMessage, PictureMessage, VideoMessage, StickerMessage,
RichMediaMessage];
function MessageFactory(logger) {
const self = this;
this._logger = logger;
this._mapping = {};
_.each(SUPPORTED_MESSAGE_TYPES, messageType => self._mapping[messageType.getType()] = messageType);
}
MessageFactory.prototype.createMessageFromJson = function(json) {
let messageType = json.message.type.toLowerCase();
if (!_.has(this._mapping, messageType)) {
this._logger.debug(`Could not build message from type ${messageType}. No mapping found`);
return;
}
return this._mapping[messageType].fromJson(json.message, json.timestamp, json.message_token);
};
module.exports = MessageFactory;