Esempio n. 1
0
        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
Esempio n. 2
0
 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")
Esempio n. 3
0
        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
Esempio n. 4
0
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()