diff --git a/apprise/plugins/email/base.py b/apprise/plugins/email/base.py index 05fa0e3c..a1999746 100644 --- a/apprise/plugins/email/base.py +++ b/apprise/plugins/email/base.py @@ -41,7 +41,7 @@ from datetime import timezone from ..base import NotifyBase from ...url import PrivacyMode -from ...common import NotifyFormat, NotifyType +from ...common import NotifyFormat, NotifyType, PersistentStoreMode from ...conversion import convert_between from ...utils import pgp as _pgp from ...utils.parse import ( @@ -75,6 +75,10 @@ class NotifyEmail(NotifyBase): # Support attachments attachment_support = True + # Our default is to no not use persistent storage beyond in-memory + # reference; this allows us to auto-generate our config if needed + storage_mode = PersistentStoreMode.AUTO + # Default Notify Format notify_format = NotifyFormat.HTML diff --git a/apprise/plugins/slack.py b/apprise/plugins/slack.py index 9fa6092e..9229b5eb 100644 --- a/apprise/plugins/slack.py +++ b/apprise/plugins/slack.py @@ -313,8 +313,8 @@ class NotifySlack(NotifyBase): r'|(?:>|\>)))', re.IGNORECASE) def __init__(self, access_token=None, token_a=None, token_b=None, - token_c=None, targets=None, include_image=True, - include_footer=True, use_blocks=None, **kwargs): + token_c=None, targets=None, include_image=None, + include_footer=None, use_blocks=None, **kwargs): """ Initialize Slack Object """ @@ -386,10 +386,15 @@ class NotifySlack(NotifyBase): re.IGNORECASE, ) # Place a thumbnail image inline with the message body - self.include_image = include_image + self.include_image = \ + self.template_args['image']['default'] \ + if include_image is None else include_image # Place a footer with each post - self.include_footer = include_footer + self.include_footer = \ + self.template_args['footer']['default'] \ + if include_footer is None else include_footer + return def send(self, body, title='', notify_type=NotifyType.INFO, attach=None, @@ -1150,7 +1155,8 @@ class NotifySlack(NotifyBase): # Get Image Flag results['include_image'] = \ - parse_bool(results['qsd'].get('image', True)) + parse_bool(results['qsd'].get( + 'image', NotifySlack.template_args['image']['default'])) # Get Payload structure (use blocks?) if 'blocks' in results['qsd'] and len(results['qsd']['blocks']): @@ -1158,7 +1164,8 @@ class NotifySlack(NotifyBase): # Get Footer Flag results['include_footer'] = \ - parse_bool(results['qsd'].get('footer', True)) + parse_bool(results['qsd'].get( + 'footer', NotifySlack.template_args['footer']['default'])) return results diff --git a/apprise/plugins/spike.py b/apprise/plugins/spike.py index 37d44fe6..f4a65921 100644 --- a/apprise/plugins/spike.py +++ b/apprise/plugins/spike.py @@ -117,7 +117,6 @@ class NotifySpike(NotifyBase): """ Send Spike.sh Notification """ - self.throttle() payload = { 'message': title if title else body, @@ -129,6 +128,9 @@ class NotifySpike(NotifyBase): 'Content-Type': 'application/json', } + # Always call throttle before any remote server i/o is made + self.throttle() + try: response = requests.post( self.webhook_url, diff --git a/apprise/plugins/webexteams.py b/apprise/plugins/webexteams.py index 39d40262..21ca00bc 100644 --- a/apprise/plugins/webexteams.py +++ b/apprise/plugins/webexteams.py @@ -242,8 +242,14 @@ class NotifyWebexTeams(NotifyBase): # We're done early as we couldn't load the results return results - # The first token is stored in the hostname - results['token'] = NotifyWebexTeams.unquote(results['host']) + # Set our token if found as an argument + if 'token' in results['qsd'] and len(results['qsd']['token']): + results['token'] = \ + NotifyWebexTeams.unquote(results['qsd']['token']) + + else: + # The first token is stored in the hostname + results['token'] = NotifyWebexTeams.unquote(results['host']) return results diff --git a/docker-compose.yml b/docker-compose.yml index bc48e333..cbd5b56b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: "3.3" services: test.py39: build: diff --git a/test/test_plugin_simplepush.py b/test/test_plugin_simplepush.py index 6f9deed6..d8567da9 100644 --- a/test/test_plugin_simplepush.py +++ b/test/test_plugin_simplepush.py @@ -120,7 +120,7 @@ def test_plugin_simplepush_urls(): @pytest.mark.skipif( 'cryptography' in sys.modules, reason="Requires that cryptography NOT be installed") -def test_plugin_fcm_cryptography_import_error(): +def test_plugin_simpepush_cryptography_import_error(): """ NotifySimplePush() Cryptography loading failure """ diff --git a/test/test_plugin_webex_teams.py b/test/test_plugin_webex_teams.py index 4d239c61..bd71eede 100644 --- a/test/test_plugin_webex_teams.py +++ b/test/test_plugin_webex_teams.py @@ -53,6 +53,13 @@ apprise_url_tests = ( # Our expected url(privacy=True) startswith() response: 'privacy_url': 'wxteams://a...a/', }), + ('wxteams://?token={}'.format('a' * 80), { + # token provided - we're good + 'instance': NotifyWebexTeams, + + # Our expected url(privacy=True) startswith() response: + 'privacy_url': 'wxteams://a...a/', + }), ('webex://{}'.format('a' * 140), { # token provided - we're good 'instance': NotifyWebexTeams,