module.exports = Message var debug = require('debug')('snapchat:message') var constants = require('../lib/constants') /** * Snapchat Message * * @class * @param {Object} params */ function Message (params) { var self = this if (!(self instanceof Message)) return new Message(params) var message = params['chat_message'] || params var header = message['header'] var body = message['body'] || { } var media = body['media'] var type = body['type'] self.identifier = message['id'] self.messageIdentifier = message['chat_message_id'] self.pagination = params['iter_token'] self.messageKind = constants.messageKindFromString(type) self.created = new Date(+message['timestamp']) if (self.messageKind === null) { debug('invalid MessageKind (%s %j)', type, params) } else if (self.messageKind === constants.MessageKind.Text.value) { self.text = body['text'] } else if (media) { self.mediaIdentifier = media['media_id'] self.mediaSize = { 'width': media['width'] | 0, 'height': media['height'] | 0 } self.mediaIV = media['iv'] self.mediaKey = media['key'] self.mediaType = media['media_type'] if (self.mediaType) { self.mediaType = 'UNSPECIFIED' } else if (self.mediaType !== 'VIDEO') { debug('new message type (%s)', self.mediaType) } } self.conversationIdentifier = header['conv_id'] self.recipients = header['to'] self.sender = header['from'] self.index = message['seq_num'] | 0 self.savedState = message['saved_state'] self.type = message['type'] if (self.type !== 'chat_message') { debug('unknown chat message type (%s %j)', self.type, params) } }