示例#1
0
    def __init__(self):
        """ Create listener for Android push notification
        """
        XplPlugin.__init__(self, name='apushnot')
        # Create logger
        self.log.debug("Listener for Android push notification created")

        # Configuration : list of recipient and source key
        self.alias_list = {}
        num = 1
        loop = True
        self._config = Query(self.myxpl, self.log)
        while loop == True:
            recipient = self._config.query('apushnot', 'name-%s' % str(num))
            source = self._config.query('apushnot', 'source-%s' % str(num))
            dfltitle = self._config.query('apushnot',
                                          'default-title-%s' % str(num))
            if recipient != None:
                mess = "Configuration : recipient=" + str(
                    recipient) + " , source=" + str(
                        source) + ", default title=" + str(dfltitle)
                self.log.info(mess)
                print(mess)
                self.alias_list[recipient] = {
                    "recipient": recipient,
                    "source": source,
                    "dfltitle": dfltitle
                }
                num += 1
            else:
                loop = False

        # no recipient configured
        if num == 1:
            msg = "No recipient configured. Exiting plugin"
            self.log.info(msg)
            print(msg)
            self.force_leave()
            return

        # Check title
        for alias in self.alias_list:
            if str(self.alias_list[alias]['dfltitle']) != "None":
                self.log.debug("default title for recipient " +
                               str(self.alias_list[alias]['recipient']) +
                               " is " +
                               str(self.alias_list[alias]['dfltitle']))
            else:
                self.log.error(
                    "Can't find the default title for the recipient " +
                    str(self.alias_list[alias]['recipient']) +
                    " , please check the configuration page of this plugin")
                self.force_leave()
                return

        # Create APushNotification object
        self.apn_notification_manager = APushNotification(self.log)

        # Create listeners
        Listener(self.apn_notification_cb, self.myxpl, {
            'schema': 'sendmsg.push',
            'xpltype': 'xpl-cmnd'
        })
        self.enable_hbeat()