def wrapped_function(*args, **kwargs): try: sys.stdout = StringIO() function_to_exec = function(*args,**kwargs) out = sys.stdout.getvalue() messager = HipChat(self.token) messager.message_room(message=out, room_id=self.room_id, message_from=self.message_from, **self.kwargs) finally: sys.stdout.close() sys.stdout = sys.__stdout__ return function_to_exec
def notify_hipchat(self, message): if 'hipchat' in self.onboarding: try: hipchat = HipChat(token=self.onboarding['hipchat']['token']) hipchat.message_room( room_id=self.onboarding['hipchat']['room_id'], message_from='Onboarding', message=message, message_format='html', color='green', notify=True ) except Exception: log.exception("Error during Hipchat message")
def wrapped_function(*args, **kwargs): try: sys.stdout = StringIO() function_to_exec = function(*args, **kwargs) out = sys.stdout.getvalue() messager = HipChat(self.token) messager.message_room(message=out, room_id=self.room_id, message_from=self.message_from, **self.kwargs) finally: sys.stdout.close() sys.stdout = sys.__stdout__ return function_to_exec
class HipChat(Persistence, TerminatorBlock): """ A block for sending messages to a HipChat room. Properties: token (str): Auth token (distributed by account admin) message (expr): Message contents. room_name (str): The plaintext name of the target HipChat room. sender (expr): Sender name to attach to the message. message_color (enum): The color of the message. notify (bool): Whether or not to send a notification to the members of the room when the message arrives. """ version = VersionProperty("1.0.1") token = StringProperty(title="API Token", default="[[HIPCHAT_TOKEN]]") message = Property(title="Message contents", default='') room_name = StringProperty(title="Room Name", default='') sender = Property(title="Sender Name", default='') message_color = SelectProperty( Color, title="Message Color", default=Color.NONE) notify = BoolProperty(title="Notify Users in Room", default=False) def __init__(self): super().__init__() self.hipster = None self.room_id = None def configure(self, context): super().configure(context) self.hipster = HC(token=self.token()) if self.room_id is None: room = self.hipster.find_room(self.room_name()) if room is None: self.logger.error( "Hipchat room '{}' does not exist".format(self.room_name()) ) else: self.room_id = room.get('room_id') def start(self): super().start() def process_signals(self, signals): for signal in signals: msg = self.message(signal) sender = self.sender(signal) try: self.hipster.message_room(self.room_id, sender, msg, color=self.message_color().value, notify=self.notify()) except Exception as e: self.logger.error( "Failed to message HipChat room {}: {}".format( self.room_name(), str(e)) ) def persisted_values(self): """Persist room_name using block mixin.""" return ["room_id"] def list_rooms(self): return self.hipster.list_rooms() def list_users(self): return self.hipster.list_users()