hubot-stackstorm-auth
Version:
A hubot plugin for integrating with StackStorm event-driven infrastructure automation platform with role based auth.
92 lines (76 loc) • 2.66 kB
JavaScript
;
var _ = require('lodash');
var env = process.env;
var util = require('util');
var utils = require('./../utils');
var DefaultMessagingHandler = require('./default');
function HipchatMessagingHandler(robot) {
var self = this;
DefaultMessagingHandler.call(self, robot);
}
util.inherits(HipchatMessagingHandler, DefaultMessagingHandler);
HipchatMessagingHandler.prototype.postData = function(data) {
var self = this;
if (!data.whisper && data.channel.indexOf('@') > -1) {
data.whisper = true;
self.robot.logger.debug('Set whisper to true for hipchat message');
}
var recipient, split_message, formatted_message,
pretext = "";
recipient = data.channel;
if (data.user && !data.whisper) {
pretext = util.format('@%s: ', data.user);
}
if (recipient.indexOf('@') === -1 ) {
recipient = self.formatRecepient(recipient);
}
split_message = utils.splitMessage(data.message);
if (pretext) {
split_message.pretext = pretext + split_message.pretext;
}
/* Hipchat is unable to render text and code in the
same message, so split them */
if (split_message.pretext) {
if (data.whisper) {
self.robot.send.call(self.robot, data.channel, split_message.pretext);
} else {
self.robot.messageRoom.call(self.robot, recipient, split_message.pretext);
}
}
if (split_message.text) {
if (data.whisper) {
self.robot.send.call(self.robot, data.channel, self.formatData(split_message.text));
} else {
self.robot.messageRoom.call(self.robot, recipient, self.formatData(split_message.text));
}
}
};
HipchatMessagingHandler.prototype.normalizeAddressee = function(msg) {
var name = msg.message.user.name;
var room = msg.message.room;
if (room === undefined) {
room = msg.message.user.jid;
}
return {
name: name,
room: room
};
};
HipchatMessagingHandler.prototype.formatData = function(data) {
if (utils.isNull(data)) {
return "";
}
// HipChat has "show more" capability in messages so no truncation.
return '/code ' + data;
};
HipchatMessagingHandler.prototype.formatRecepient = function(recepient) {
var robot_name = env.HUBOT_HIPCHAT_JID.split("_")[0];
var hipchat_domain = (env.HUBOT_HIPCHAT_XMPP_DOMAIN === 'btf.hipchat.com') ?
'conf.btf.hipchat.com' : 'conf.hipchat.com';
return util.format('%s_%s@%s', robot_name, recepient, hipchat_domain);
};
HipchatMessagingHandler.prototype.normalizeCommand = function(command) {
var self = this;
return HipchatMessagingHandler.super_.prototype.normalizeCommand.call(self, command);
};
module.exports = HipchatMessagingHandler;