diff options
Diffstat (limited to 'libs/apprise/plugins/NotifySparkPost.py')
-rw-r--r-- | libs/apprise/plugins/NotifySparkPost.py | 71 |
1 files changed, 46 insertions, 25 deletions
diff --git a/libs/apprise/plugins/NotifySparkPost.py b/libs/apprise/plugins/NotifySparkPost.py index 93ce84d52..25024bc5f 100644 --- a/libs/apprise/plugins/NotifySparkPost.py +++ b/libs/apprise/plugins/NotifySparkPost.py @@ -1,27 +1,34 @@ # -*- coding: utf-8 -*- +# BSD 3-Clause License # -# Copyright (C) 2020 Chris Caron <[email protected]> -# All rights reserved. +# Apprise - Push Notification Library. +# Copyright (c) 2023, Chris Caron <[email protected]> # -# This code is licensed under the MIT License. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files(the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions : +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Signup @ https://www.sparkpost.com # @@ -79,8 +86,10 @@ SPARKPOST_HTTP_ERROR_MAP = { } -# Priorities class SparkPostRegion: + """ + Regions + """ US = 'us' EU = 'eu' @@ -141,9 +150,6 @@ class NotifySparkPost(NotifyBase): # Default Notify Format notify_format = NotifyFormat.HTML - # The default region to use if one isn't otherwise specified - sparkpost_default_region = SparkPostRegion.US - # Define object templates templates = ( '{schema}://{user}@{host}:{apikey}/', @@ -224,7 +230,7 @@ class NotifySparkPost(NotifyBase): """ Initialize SparkPost Object """ - super(NotifySparkPost, self).__init__(**kwargs) + super().__init__(**kwargs) # API Key (associated with project) self.apikey = validate_regex(apikey) @@ -254,7 +260,7 @@ class NotifySparkPost(NotifyBase): # Store our region try: - self.region_name = self.sparkpost_default_region \ + self.region_name = self.template_args['region']['default'] \ if region_name is None else region_name.lower() if self.region_name not in SPARKPOST_REGIONS: @@ -716,6 +722,21 @@ class NotifySparkPost(NotifyBase): safe='') for e in self.targets]), params=NotifySparkPost.urlencode(params)) + def __len__(self): + """ + Returns the number of targets associated with this notification + """ + # + # Factor batch into calculation + # + batch_size = 1 if not self.batch else self.default_batch_size + targets = len(self.targets) + if batch_size > 1: + targets = int(targets / batch_size) + \ + (1 if targets % batch_size else 0) + + return targets if targets > 0 else 1 + @staticmethod def parse_url(url): """ @@ -746,7 +767,7 @@ class NotifySparkPost(NotifyBase): NotifySparkPost.unquote(results['qsd']['name']) if 'region' in results['qsd'] and len(results['qsd']['region']): - # Extract from name to associate with from address + # Extract region results['region_name'] = \ NotifySparkPost.unquote(results['qsd']['region']) |