From b5a9c25e86869c660c38a59ae03c3f4b1de2a44d Mon Sep 17 00:00:00 2001 From: Chris Caron Date: Sun, 12 Feb 2023 14:15:23 -0500 Subject: [PATCH] Cisco Webex Teams (wxteams://) Life Cycle Support (#819) --- apprise/plugins/NotifyWebexTeams.py | 11 ++++++----- test/test_plugin_webex_teams.py | 12 ++++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/apprise/plugins/NotifyWebexTeams.py b/apprise/plugins/NotifyWebexTeams.py index 99b3fdfb..6b953b71 100644 --- a/apprise/plugins/NotifyWebexTeams.py +++ b/apprise/plugins/NotifyWebexTeams.py @@ -95,7 +95,7 @@ class NotifyWebexTeams(NotifyBase): service_url = 'https://webex.teams.com/' # The default secure protocol - secure_protocol = 'wxteams' + secure_protocol = ('wxteams', 'webex') # A URL that takes you to the setup/help of the specific protocol setup_url = 'https://github.com/caronc/apprise/wiki/Notify_wxteams' @@ -124,7 +124,7 @@ class NotifyWebexTeams(NotifyBase): 'type': 'string', 'private': True, 'required': True, - 'regex': (r'^[a-z0-9]{80}$', 'i'), + 'regex': (r'^[a-z0-9]{80,160}$', 'i'), }, }) @@ -220,7 +220,7 @@ class NotifyWebexTeams(NotifyBase): params = self.url_parameters(privacy=privacy, *args, **kwargs) return '{schema}://{token}/?{params}'.format( - schema=self.secure_protocol, + schema=self.secure_protocol[0], token=self.pprint(self.token, privacy, safe=''), params=NotifyWebexTeams.urlencode(params), ) @@ -249,14 +249,15 @@ class NotifyWebexTeams(NotifyBase): """ result = re.match( - r'^https?://api\.ciscospark\.com/v[1-9][0-9]*/webhooks/incoming/' + r'^https?://(api\.ciscospark\.com|webexapis\.com)' + r'/v[1-9][0-9]*/webhooks/incoming/' r'(?P[A-Z0-9_-]+)/?' r'(?P\?.+)?$', url, re.I) if result: return NotifyWebexTeams.parse_url( '{schema}://{webhook_token}/{params}'.format( - schema=NotifyWebexTeams.secure_protocol, + schema=NotifyWebexTeams.secure_protocol[0], webhook_token=result.group('webhook_token'), params='' if not result.group('params') else result.group('params'))) diff --git a/test/test_plugin_webex_teams.py b/test/test_plugin_webex_teams.py index 05f7c3ae..692c824a 100644 --- a/test/test_plugin_webex_teams.py +++ b/test/test_plugin_webex_teams.py @@ -57,11 +57,23 @@ apprise_url_tests = ( # Our expected url(privacy=True) startswith() response: 'privacy_url': 'wxteams://a...a/', }), + ('webex://{}'.format('a' * 140), { + # token provided - we're good + 'instance': NotifyWebexTeams, + + # Our expected url(privacy=True) startswith() response: + 'privacy_url': 'wxteams://a...a/', + }), # Support Native URLs ('https://api.ciscospark.com/v1/webhooks/incoming/{}'.format('a' * 80), { # token provided - we're good 'instance': NotifyWebexTeams, }), + # Support New Native URLs + ('https://webexapis.com/v1/webhooks/incoming/{}'.format('a' * 100), { + # token provided - we're good + 'instance': NotifyWebexTeams, + }), # Support Native URLs with arguments ('https://api.ciscospark.com/v1/webhooks/incoming/{}?format=text'.format( 'a' * 80), {