# -*- coding: utf-8 -*- # # Pushjet Notify Wrapper # # Copyright (C) 2017-2018 Chris Caron # # This file is part of apprise. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. import re from .pushjet import errors from .pushjet import pushjet from ..NotifyBase import NotifyBase PUBLIC_KEY_RE = re.compile( r'^[a-z0-9]{4}-[a-z0-9]{6}-[a-z0-9]{12}-[a-z0-9]{5}-[a-z0-9]{9}$', re.I) SECRET_KEY_RE = re.compile(r'^[a-z0-9]{32}$', re.I) class NotifyPushjet(NotifyBase): """ A wrapper for Pushjet Notifications """ # The default descriptive name associated with the Notification service_name = 'Pushjet' # The services URL service_url = 'https://pushjet.io/' # The default protocol protocol = 'pjet' # The default secure protocol secure_protocol = 'pjets' # A URL that takes you to the setup/help of the specific protocol setup_url = 'https://github.com/caronc/apprise/wiki/Notify_pushjet' def __init__(self, **kwargs): """ Initialize Pushjet Object """ super(NotifyPushjet, self).__init__(**kwargs) def notify(self, title, body, notify_type): """ Perform Pushjet Notification """ try: if self.user and self.host: server = "http://" if self.secure: server = "https://" server += self.host if self.port: server += ":" + str(self.port) api = pushjet.Api(server) service = api.Service(secret_key=self.user) else: api = pushjet.Api(pushjet.DEFAULT_API_URL) service = api.Service(secret_key=self.host) service.send(body, title) self.logger.info('Sent Pushjet notification.') except (errors.PushjetError, ValueError) as e: self.logger.warning('Failed to send Pushjet notification.') self.logger.debug('Pushjet Exception: %s' % str(e)) return False return True