mirror of https://github.com/caronc/apprise
Refactored apprise mailto:// and utils module (#1255)
parent
4d21759f60
commit
551fa0d708
|
@ -32,11 +32,10 @@ import os
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from . import common
|
from . import common
|
||||||
from .conversion import convert_between
|
from .conversion import convert_between
|
||||||
from .utils import is_exclusive_match
|
from .utils.logic import is_exclusive_match
|
||||||
|
from .utils.parse import parse_list, parse_urls
|
||||||
|
from .utils.cwe312 import cwe312_url
|
||||||
from .manager_plugins import NotificationManager
|
from .manager_plugins import NotificationManager
|
||||||
from .utils import parse_list
|
|
||||||
from .utils import parse_urls
|
|
||||||
from .utils import cwe312_url
|
|
||||||
from .emojis import apply_emojis
|
from .emojis import apply_emojis
|
||||||
from .logger import logger
|
from .logger import logger
|
||||||
from .asset import AppriseAsset
|
from .asset import AppriseAsset
|
||||||
|
|
|
@ -33,7 +33,7 @@ from .manager_attachment import AttachmentManager
|
||||||
from .logger import logger
|
from .logger import logger
|
||||||
from .common import ContentLocation
|
from .common import ContentLocation
|
||||||
from .common import CONTENT_LOCATIONS
|
from .common import CONTENT_LOCATIONS
|
||||||
from .utils import GET_SCHEMA_RE
|
from .utils.parse import GET_SCHEMA_RE
|
||||||
|
|
||||||
# Grant access to our Notification Manager Singleton
|
# Grant access to our Notification Manager Singleton
|
||||||
A_MGR = AttachmentManager()
|
A_MGR = AttachmentManager()
|
||||||
|
|
|
@ -32,9 +32,8 @@ from .manager_config import ConfigurationManager
|
||||||
from . import URLBase
|
from . import URLBase
|
||||||
from .asset import AppriseAsset
|
from .asset import AppriseAsset
|
||||||
from . import common
|
from . import common
|
||||||
from .utils import GET_SCHEMA_RE
|
from .utils.parse import GET_SCHEMA_RE, parse_list
|
||||||
from .utils import parse_list
|
from .utils.logic import is_exclusive_match
|
||||||
from .utils import is_exclusive_match
|
|
||||||
from .logger import logger
|
from .logger import logger
|
||||||
|
|
||||||
# Grant access to our Configuration Manager Singleton
|
# Grant access to our Configuration Manager Singleton
|
||||||
|
|
|
@ -143,6 +143,12 @@ class AppriseAsset:
|
||||||
# Defines the encoding of the content passed into Apprise
|
# Defines the encoding of the content passed into Apprise
|
||||||
encoding = 'utf-8'
|
encoding = 'utf-8'
|
||||||
|
|
||||||
|
# Automatically generate our Pretty Good Privacy (PGP) keys if one isn't
|
||||||
|
# present and our environment configuration allows for it.
|
||||||
|
# For example, a case where the environment wouldn't allow for it would be
|
||||||
|
# if Persistent Storage was set to `memory`
|
||||||
|
pgp_autogen = True
|
||||||
|
|
||||||
# For more detail see CWE-312 @
|
# For more detail see CWE-312 @
|
||||||
# https://cwe.mitre.org/data/definitions/312.html
|
# https://cwe.mitre.org/data/definitions/312.html
|
||||||
#
|
#
|
||||||
|
|
|
@ -32,7 +32,7 @@ import mimetypes
|
||||||
import base64
|
import base64
|
||||||
from .. import exception
|
from .. import exception
|
||||||
from ..url import URLBase
|
from ..url import URLBase
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..common import ContentLocation
|
from ..common import ContentLocation
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
from .base import AttachBase
|
from .base import AttachBase
|
||||||
from ..utils import path_decode
|
from ..utils.disk import path_decode
|
||||||
from ..common import ContentLocation
|
from ..common import ContentLocation
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,8 @@ from . import AppriseAsset
|
||||||
from . import AppriseConfig
|
from . import AppriseConfig
|
||||||
from . import PersistentStore
|
from . import PersistentStore
|
||||||
|
|
||||||
from .utils import dir_size, bytes_to_str, parse_list, path_decode
|
from .utils.parse import parse_list
|
||||||
|
from .utils.disk import dir_size, bytes_to_str, path_decode
|
||||||
from .common import NOTIFY_TYPES
|
from .common import NOTIFY_TYPES
|
||||||
from .common import NOTIFY_FORMATS
|
from .common import NOTIFY_FORMATS
|
||||||
from .common import PERSISTENT_STORE_MODES
|
from .common import PERSISTENT_STORE_MODES
|
||||||
|
|
|
@ -35,11 +35,8 @@ from .. import plugins
|
||||||
from .. import common
|
from .. import common
|
||||||
from ..asset import AppriseAsset
|
from ..asset import AppriseAsset
|
||||||
from ..url import URLBase
|
from ..url import URLBase
|
||||||
from ..utils import GET_SCHEMA_RE
|
from ..utils.parse import GET_SCHEMA_RE, parse_list, parse_bool, parse_urls
|
||||||
from ..utils import parse_list
|
from ..utils.cwe312 import cwe312_url
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import parse_urls
|
|
||||||
from ..utils import cwe312_url
|
|
||||||
from ..manager_config import ConfigurationManager
|
from ..manager_config import ConfigurationManager
|
||||||
from ..manager_plugins import NotificationManager
|
from ..manager_plugins import NotificationManager
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
from .base import ConfigBase
|
from .base import ConfigBase
|
||||||
from ..utils import path_decode
|
from ..utils.disk import path_decode
|
||||||
from ..common import ConfigFormat
|
from ..common import ConfigFormat
|
||||||
from ..common import ContentIncludeMode
|
from ..common import ContentIncludeMode
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
|
@ -29,10 +29,8 @@
|
||||||
|
|
||||||
from ..plugins.base import NotifyBase
|
from ..plugins.base import NotifyBase
|
||||||
from ..manager_plugins import NotificationManager
|
from ..manager_plugins import NotificationManager
|
||||||
from ..utils import URL_DETAILS_RE
|
from ..utils.parse import URL_DETAILS_RE, parse_url, url_assembly
|
||||||
from ..utils import parse_url
|
from ..utils.logic import dict_full_update
|
||||||
from ..utils import url_assembly
|
|
||||||
from ..utils import dict_full_update
|
|
||||||
from .. import common
|
from .. import common
|
||||||
from ..logger import logger
|
from ..logger import logger
|
||||||
import inspect
|
import inspect
|
||||||
|
|
|
@ -37,6 +37,14 @@ class AppriseException(Exception):
|
||||||
self.error_code = error_code
|
self.error_code = error_code
|
||||||
|
|
||||||
|
|
||||||
|
class ApprisePluginException(AppriseException):
|
||||||
|
"""
|
||||||
|
Class object for handling exceptions raised from within a plugin
|
||||||
|
"""
|
||||||
|
def __init__(self, message, error_code=600):
|
||||||
|
super().__init__(message, error_code=error_code)
|
||||||
|
|
||||||
|
|
||||||
class AppriseDiskIOError(AppriseException):
|
class AppriseDiskIOError(AppriseException):
|
||||||
"""
|
"""
|
||||||
Thrown when an disk i/o error occurs
|
Thrown when an disk i/o error occurs
|
||||||
|
|
|
@ -33,10 +33,10 @@ import time
|
||||||
import hashlib
|
import hashlib
|
||||||
import inspect
|
import inspect
|
||||||
import threading
|
import threading
|
||||||
from .utils import import_module
|
from .utils.module import import_module
|
||||||
from .utils import Singleton
|
from .utils.singleton import Singleton
|
||||||
from .utils import parse_list
|
from .utils.parse import parse_list
|
||||||
from .utils import path_decode
|
from .utils.disk import path_decode
|
||||||
from os.path import dirname
|
from os.path import dirname
|
||||||
from os.path import abspath
|
from os.path import abspath
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
@ -244,8 +244,10 @@ class PluginManager(metaclass=Singleton):
|
||||||
for schema in schemas:
|
for schema in schemas:
|
||||||
if schema in self._schema_map:
|
if schema in self._schema_map:
|
||||||
logger.error(
|
logger.error(
|
||||||
"{} schema ({}) mismatch detected - {} to {}"
|
"{} schema ({}) mismatch detected -"
|
||||||
.format(self.name, schema, self._schema_map,
|
' {} already maps to {}'
|
||||||
|
.format(self.name, schema,
|
||||||
|
self._schema_map[schema],
|
||||||
plugin))
|
plugin))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ from datetime import datetime, timezone, timedelta
|
||||||
import time
|
import time
|
||||||
import hashlib
|
import hashlib
|
||||||
from .common import PersistentStoreMode, PERSISTENT_STORE_MODES
|
from .common import PersistentStoreMode, PERSISTENT_STORE_MODES
|
||||||
from .utils import path_decode
|
from .utils.disk import path_decode
|
||||||
from .logger import logger
|
from .logger import logger
|
||||||
|
|
||||||
# Used for writing/reading time stored in cache file
|
# Used for writing/reading time stored in cache file
|
||||||
|
|
|
@ -36,9 +36,8 @@ from ..common import NotifyImageSize
|
||||||
from ..common import NOTIFY_IMAGE_SIZES
|
from ..common import NOTIFY_IMAGE_SIZES
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NOTIFY_TYPES
|
from ..common import NOTIFY_TYPES
|
||||||
from ..utils import parse_list
|
from ..utils.cwe312 import cwe312_url
|
||||||
from ..utils import cwe312_url
|
from ..utils.parse import parse_list, GET_SCHEMA_RE
|
||||||
from ..utils import GET_SCHEMA_RE
|
|
||||||
from ..logger import logger
|
from ..logger import logger
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..locale import LazyTranslation
|
from ..locale import LazyTranslation
|
||||||
|
|
|
@ -35,10 +35,8 @@ import requests
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import (
|
||||||
from ..utils import parse_bool
|
is_phone_no, parse_bool, parse_phone_no, validate_regex)
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,7 @@ from .. import exception
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,8 +74,7 @@ from .base import NotifyBase
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_call_sign
|
from ..utils.parse import is_call_sign, parse_call_sign
|
||||||
from ..utils import parse_call_sign
|
|
||||||
from .. import __version__
|
from .. import __version__
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,7 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ from functools import partial
|
||||||
|
|
||||||
from ..url import URLBase
|
from ..url import URLBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..common import NOTIFY_TYPES
|
from ..common import NOTIFY_TYPES
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NOTIFY_FORMATS
|
from ..common import NOTIFY_FORMATS
|
||||||
|
|
|
@ -39,9 +39,7 @@ from itertools import chain
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, parse_bool
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,7 @@ import json
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, parse_bool
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,10 +36,8 @@ import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import (
|
||||||
from ..utils import parse_phone_no
|
is_phone_no, parse_phone_no, parse_bool, validate_regex)
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ import requests
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,9 +45,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, parse_bool
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Extend HTTP Error Messages
|
# Extend HTTP Error Messages
|
||||||
|
|
|
@ -41,10 +41,8 @@ from json import loads
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import (
|
||||||
from ..utils import parse_phone_no
|
is_phone_no, parse_phone_no, validate_regex, parse_bool)
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Extend HTTP Error Messages
|
# Extend HTTP Error Messages
|
||||||
|
|
|
@ -55,10 +55,8 @@ from .base import NotifyBase
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_call_sign
|
from ..utils.parse import (
|
||||||
from ..utils import parse_call_sign
|
is_call_sign, parse_call_sign, parse_list, parse_bool)
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import parse_bool
|
|
||||||
|
|
||||||
|
|
||||||
class DapnetPriority:
|
class DapnetPriority:
|
||||||
|
|
|
@ -30,7 +30,7 @@ import sys
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Default our global support flag
|
# Default our global support flag
|
||||||
|
|
|
@ -38,8 +38,7 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Register at https://dingtalk.com
|
# Register at https://dingtalk.com
|
||||||
|
|
|
@ -54,8 +54,7 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..attachment.base import AttachBase
|
from ..attachment.base import AttachBase
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# BSD 2-Clause License
|
||||||
|
#
|
||||||
|
# Apprise - Push Notification Library.
|
||||||
|
# Copyright (c) 2024, Chris Caron <lead2gold@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
from email import charset
|
||||||
|
|
||||||
|
from .base import NotifyEmail
|
||||||
|
from .common import (
|
||||||
|
AppriseEmailException, EmailMessage, SecureMailMode, SECURE_MODES,
|
||||||
|
WebBaseLogin)
|
||||||
|
from .templates import EMAIL_TEMPLATES
|
||||||
|
|
||||||
|
# Globally Default encoding mode set to Quoted Printable.
|
||||||
|
charset.add_charset('utf-8', charset.QP, charset.QP, 'utf-8')
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
# Reference
|
||||||
|
'NotifyEmail',
|
||||||
|
|
||||||
|
# Pretty Good Privacy
|
||||||
|
'ApprisePGPController', 'ApprisePGPException',
|
||||||
|
|
||||||
|
# Other
|
||||||
|
'AppriseEmailException', 'EmailMessage', 'SecureMailMode', 'SECURE_MODES',
|
||||||
|
'WebBaseLogin',
|
||||||
|
|
||||||
|
# Additional entries that may be useful to some developers
|
||||||
|
'EMAIL_TEMPLATES', 'PGP_SUPPORT',
|
||||||
|
]
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,84 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# BSD 2-Clause License
|
||||||
|
#
|
||||||
|
# Apprise - Push Notification Library.
|
||||||
|
# Copyright (c) 2024, Chris Caron <lead2gold@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
import dataclasses
|
||||||
|
import typing as t
|
||||||
|
|
||||||
|
from ...exception import ApprisePluginException
|
||||||
|
|
||||||
|
|
||||||
|
class AppriseEmailException(ApprisePluginException):
|
||||||
|
"""
|
||||||
|
Thrown when there is an error with the Email Attachment
|
||||||
|
"""
|
||||||
|
def __init__(self, message, error_code=601):
|
||||||
|
super().__init__(message, error_code=error_code)
|
||||||
|
|
||||||
|
|
||||||
|
class WebBaseLogin:
|
||||||
|
"""
|
||||||
|
This class is just used in conjunction of the default emailers
|
||||||
|
to best formulate a login to it using the data detected
|
||||||
|
"""
|
||||||
|
# User Login must be Email Based
|
||||||
|
EMAIL = 'Email'
|
||||||
|
|
||||||
|
# User Login must UserID Based
|
||||||
|
USERID = 'UserID'
|
||||||
|
|
||||||
|
|
||||||
|
# Secure Email Modes
|
||||||
|
class SecureMailMode:
|
||||||
|
INSECURE = "insecure"
|
||||||
|
SSL = "ssl"
|
||||||
|
STARTTLS = "starttls"
|
||||||
|
|
||||||
|
|
||||||
|
# Define all of the secure modes (used during validation)
|
||||||
|
SECURE_MODES = {
|
||||||
|
SecureMailMode.STARTTLS: {
|
||||||
|
'default_port': 587,
|
||||||
|
},
|
||||||
|
SecureMailMode.SSL: {
|
||||||
|
'default_port': 465,
|
||||||
|
},
|
||||||
|
SecureMailMode.INSECURE: {
|
||||||
|
'default_port': 25,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass
|
||||||
|
class EmailMessage:
|
||||||
|
"""
|
||||||
|
Our message structure
|
||||||
|
"""
|
||||||
|
recipient: str
|
||||||
|
to_addrs: t.List[str]
|
||||||
|
body: str
|
|
@ -0,0 +1,272 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# BSD 2-Clause License
|
||||||
|
#
|
||||||
|
# Apprise - Push Notification Library.
|
||||||
|
# Copyright (c) 2024, Chris Caron <lead2gold@gmail.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
import re
|
||||||
|
from .common import (SecureMailMode, WebBaseLogin)
|
||||||
|
|
||||||
|
# To attempt to make this script stupid proof, if we detect an email address
|
||||||
|
# that is part of the this table, we can pre-use a lot more defaults if they
|
||||||
|
# aren't otherwise specified on the users input.
|
||||||
|
EMAIL_TEMPLATES = (
|
||||||
|
# Google GMail
|
||||||
|
(
|
||||||
|
'Google Mail',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>gmail\.com)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 587,
|
||||||
|
'smtp_host': 'smtp.gmail.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Yandex
|
||||||
|
(
|
||||||
|
'Yandex',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>yandex\.(com|ru|ua|by|kz|uz|tr|fr))$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.yandex.ru',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.SSL,
|
||||||
|
'login_type': (WebBaseLogin.USERID, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Microsoft Hotmail
|
||||||
|
(
|
||||||
|
'Microsoft Hotmail',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>(hotmail|live)\.com(\.au)?)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 587,
|
||||||
|
'smtp_host': 'smtp-mail.outlook.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Microsoft Outlook
|
||||||
|
(
|
||||||
|
'Microsoft Outlook',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>(smtp\.)?outlook\.com(\.au)?)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 587,
|
||||||
|
'smtp_host': 'smtp.outlook.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Microsoft Office 365 (Email Server)
|
||||||
|
# You must specify an authenticated sender address in the from= settings
|
||||||
|
# and a valid email in the to= to deliver your emails to
|
||||||
|
(
|
||||||
|
'Microsoft Office 365',
|
||||||
|
re.compile(
|
||||||
|
r'^[^@]+@(?P<domain>(smtp\.)?office365\.com)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 587,
|
||||||
|
'smtp_host': 'smtp.office365.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Yahoo Mail
|
||||||
|
(
|
||||||
|
'Yahoo Mail',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>yahoo\.(ca|com))$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.mail.yahoo.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Fast Mail (Series 1)
|
||||||
|
(
|
||||||
|
'Fast Mail',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>fastmail\.(com|cn|co\.uk|com\.au|de|es|fm|fr|im|'
|
||||||
|
r'in|jp|mx|net|nl|org|se|to|tw|uk|us))$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.fastmail.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.SSL,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Fast Mail (Series 2)
|
||||||
|
(
|
||||||
|
'Fast Mail Extended Addresses',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>123mail\.org|airpost\.net|eml\.cc|fmail\.co\.uk|'
|
||||||
|
r'fmgirl\.com|fmguy\.com|mailbolt\.com|mailcan\.com|'
|
||||||
|
r'mailhaven\.com|mailmight\.com|ml1\.net|mm\.st|myfastmail\.com|'
|
||||||
|
r'proinbox\.com|promessage\.com|rushpost\.com|sent\.(as|at|com)|'
|
||||||
|
r'speedymail\.org|warpmail\.net|xsmail\.com|150mail\.com|'
|
||||||
|
r'150ml\.com|16mail\.com|2-mail\.com|4email\.net|50mail\.com|'
|
||||||
|
r'allmail\.net|bestmail\.us|cluemail\.com|elitemail\.org|'
|
||||||
|
r'emailcorner\.net|emailengine\.(net|org)|emailgroups\.net|'
|
||||||
|
r'emailplus\.org|emailuser\.net|f-m\.fm|fast-email\.com|'
|
||||||
|
r'fast-mail\.org|fastem\.com|fastemail\.us|fastemailer\.com|'
|
||||||
|
r'fastest\.cc|fastimap\.com|fastmailbox\.net|fastmessaging\.com|'
|
||||||
|
r'fea\.st|fmailbox\.com|ftml\.net|h-mail\.us|hailmail\.net|'
|
||||||
|
r'imap-mail\.com|imap\.cc|imapmail\.org|inoutbox\.com|'
|
||||||
|
r'internet-e-mail\.com|internet-mail\.org|internetemails\.net|'
|
||||||
|
r'internetmailing\.net|jetemail\.net|justemail\.net|'
|
||||||
|
r'letterboxes\.org|mail-central\.com|mail-page\.com|'
|
||||||
|
r'mailandftp\.com|mailas\.com|mailc\.net|mailforce\.net|'
|
||||||
|
r'mailftp\.com|mailingaddress\.org|mailite\.com|mailnew\.com|'
|
||||||
|
r'mailsent\.net|mailservice\.ms|mailup\.net|mailworks\.org|'
|
||||||
|
r'mymacmail\.com|nospammail\.net|ownmail\.net|petml\.com|'
|
||||||
|
r'postinbox\.com|postpro\.net|realemail\.net|reallyfast\.biz|'
|
||||||
|
r'reallyfast\.info|speedpost\.net|ssl-mail\.com|swift-mail\.com|'
|
||||||
|
r'the-fastest\.net|the-quickest\.com|theinternetemail\.com|'
|
||||||
|
r'veryfast\.biz|veryspeedy\.net|yepmail\.net)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.fastmail.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.SSL,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Zoho Mail (Free)
|
||||||
|
(
|
||||||
|
'Zoho Mail',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>zoho(mail)?\.com)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 587,
|
||||||
|
'smtp_host': 'smtp.zoho.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# SendGrid (Email Server)
|
||||||
|
# You must specify an authenticated sender address in the from= settings
|
||||||
|
# and a valid email in the to= to deliver your emails to
|
||||||
|
(
|
||||||
|
'SendGrid',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>(\.smtp)?sendgrid\.(com|net))$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.sendgrid.net',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.SSL,
|
||||||
|
'login_type': (WebBaseLogin.USERID, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# 163.com
|
||||||
|
(
|
||||||
|
'163.com',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>163\.com)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.163.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.SSL,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Foxmail.com
|
||||||
|
(
|
||||||
|
'Foxmail.com',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>(foxmail|qq)\.com)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 587,
|
||||||
|
'smtp_host': 'smtp.qq.com',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.STARTTLS,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Comcast.net
|
||||||
|
(
|
||||||
|
'Comcast.net',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>(comcast)\.net)$', re.I),
|
||||||
|
{
|
||||||
|
'port': 465,
|
||||||
|
'smtp_host': 'smtp.comcast.net',
|
||||||
|
'secure': True,
|
||||||
|
'secure_mode': SecureMailMode.SSL,
|
||||||
|
'login_type': (WebBaseLogin.EMAIL, )
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
# Catch All
|
||||||
|
(
|
||||||
|
'Custom',
|
||||||
|
re.compile(
|
||||||
|
r'^((?P<label>[^+]+)\+)?(?P<id>[^@]+)@'
|
||||||
|
r'(?P<domain>.+)$', re.I),
|
||||||
|
{
|
||||||
|
# Setting smtp_host to None is a way of
|
||||||
|
# auto-detecting it based on other parameters
|
||||||
|
# specified. There is no reason to ever modify
|
||||||
|
# this Catch All
|
||||||
|
'smtp_host': None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
|
@ -36,7 +36,7 @@ from json import loads
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from .. import __version__ as VERSION
|
from .. import __version__ as VERSION
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
|
@ -52,10 +52,8 @@ import requests
|
||||||
from json import dumps
|
from json import dumps
|
||||||
from ..base import NotifyBase
|
from ..base import NotifyBase
|
||||||
from ...common import NotifyType
|
from ...common import NotifyType
|
||||||
from ...utils import validate_regex
|
from ...utils.parse import validate_regex, parse_list, parse_bool
|
||||||
from ...utils import parse_list
|
from ...utils.logic import dict_full_update
|
||||||
from ...utils import parse_bool
|
|
||||||
from ...utils import dict_full_update
|
|
||||||
from ...common import NotifyImageSize
|
from ...common import NotifyImageSize
|
||||||
from ...apprise_attachment import AppriseAttachment
|
from ...apprise_attachment import AppriseAttachment
|
||||||
from ...locale import gettext_lazy as _
|
from ...locale import gettext_lazy as _
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
# https://firebase.google.com/docs/reference/fcm/rest/v1/\
|
# https://firebase.google.com/docs/reference/fcm/rest/v1/\
|
||||||
# projects.messages#androidnotification
|
# projects.messages#androidnotification
|
||||||
import re
|
import re
|
||||||
from ...utils import parse_bool
|
from ...utils.parse import parse_bool
|
||||||
from ...common import NotifyType
|
from ...common import NotifyType
|
||||||
from ...asset import AppriseAsset
|
from ...asset import AppriseAsset
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ from json import dumps
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,7 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool, validate_regex
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Default our global support flag
|
# Default our global support flag
|
||||||
|
|
|
@ -61,7 +61,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ from json import dumps
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType, NotifyFormat
|
from ..common import NotifyType, NotifyFormat
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Default our global support flag
|
# Default our global support flag
|
||||||
|
|
|
@ -37,7 +37,7 @@ from uuid import uuid4
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,7 @@ import requests
|
||||||
import json
|
import json
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, validate_regex
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,7 @@ from json import dumps
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,9 +42,7 @@ import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool, validate_regex
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Extend HTTP Error Messages
|
# Extend HTTP Error Messages
|
||||||
|
|
|
@ -40,9 +40,7 @@ from json import loads
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, validate_regex
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Extend HTTP Error Messages
|
# Extend HTTP Error Messages
|
||||||
|
|
|
@ -41,7 +41,7 @@ from json import dumps
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Extend HTTP Error Messages
|
# Extend HTTP Error Messages
|
||||||
|
|
|
@ -92,10 +92,8 @@ import requests
|
||||||
from json import dumps
|
from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..utils import is_hostname
|
from ..utils.parse import validate_regex, is_hostname, is_ipaddr
|
||||||
from ..utils import is_ipaddr
|
|
||||||
|
|
||||||
# A URL Parser to detect App ID
|
# A URL Parser to detect App ID
|
||||||
LAMETRIC_APP_ID_DETECTOR_RE = re.compile(
|
LAMETRIC_APP_ID_DETECTOR_RE = re.compile(
|
||||||
|
|
|
@ -37,9 +37,7 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex, parse_list, parse_bool
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,10 +36,8 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..utils import parse_list
|
from ..utils.parse import (
|
||||||
from ..utils import is_hostname
|
parse_list, is_hostname, is_ipaddr, parse_bool)
|
||||||
from ..utils import is_ipaddr
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ import os
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Default our global support flag
|
# Default our global support flag
|
||||||
|
|
|
@ -59,10 +59,8 @@ from email.utils import formataddr
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..utils import parse_emails
|
from ..utils.parse import (
|
||||||
from ..utils import parse_bool
|
parse_emails, parse_bool, is_email, validate_regex)
|
||||||
from ..utils import is_email
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..logger import logger
|
from ..logger import logger
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,7 @@ from ..url import PrivacyMode
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool, validate_regex
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..attachment.base import AttachBase
|
from ..attachment.base import AttachBase
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,8 @@ from ..common import NotifyType
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import PersistentStoreMode
|
from ..common import PersistentStoreMode
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import (
|
||||||
from ..utils import parse_list
|
parse_bool, parse_list, is_hostname, validate_regex)
|
||||||
from ..utils import is_hostname
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Define default path
|
# Define default path
|
||||||
|
|
|
@ -42,9 +42,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool, parse_list, validate_regex
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Some Reference Locations:
|
# Some Reference Locations:
|
||||||
|
|
|
@ -36,9 +36,7 @@ import requests
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, validate_regex
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ from json import dumps
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,7 @@ from os.path import isfile
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Default our global support flag
|
# Default our global support flag
|
||||||
|
|
|
@ -40,9 +40,8 @@ import requests
|
||||||
from json import dumps
|
from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import (
|
||||||
from ..utils import parse_phone_no, parse_bool
|
is_phone_no, parse_phone_no, parse_bool, validate_regex)
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -85,10 +85,8 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool, validate_regex
|
||||||
from ..utils import validate_regex
|
from ..utils.templates import apply_template, TemplateType
|
||||||
from ..utils import apply_template
|
|
||||||
from ..utils import TemplateType
|
|
||||||
from ..apprise_attachment import AppriseAttachment
|
from ..apprise_attachment import AppriseAttachment
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,7 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..utils import parse_list, parse_bool
|
from ..utils.parse import parse_list, parse_bool, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from .discord import USER_ROLE_DETECTION_RE
|
from .discord import USER_ROLE_DETECTION_RE
|
||||||
|
|
||||||
# Used to break path apart into list of channels
|
# Used to break path apart into list of channels
|
||||||
|
|
|
@ -46,8 +46,7 @@ import requests
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,11 +46,8 @@ from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..utils import parse_list
|
from ..utils.parse import (
|
||||||
from ..utils import parse_bool
|
parse_list, parse_bool, is_hostname, is_ipaddr, validate_regex)
|
||||||
from ..utils import is_hostname
|
|
||||||
from ..utils import is_ipaddr
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..attachment.base import AttachBase
|
from ..attachment.base import AttachBase
|
||||||
from ..attachment.memory import AttachMemory
|
from ..attachment.memory import AttachMemory
|
||||||
|
|
|
@ -49,9 +49,7 @@ from .. import exception
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_email
|
from ..utils.parse import is_email, parse_emails, validate_regex
|
||||||
from ..utils import parse_emails
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..common import PersistentStoreMode
|
from ..common import PersistentStoreMode
|
||||||
|
|
||||||
|
|
|
@ -40,12 +40,8 @@ from itertools import chain
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..utils import decode_b64_dict
|
from ..utils.base64 import decode_b64_dict, encode_b64_dict
|
||||||
from ..utils import encode_b64_dict
|
from ..utils.parse import validate_regex, parse_list, parse_bool, is_email
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import is_email
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -53,10 +53,7 @@ import hashlib
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType, NOTIFY_TYPES
|
from ..common import NotifyType, NOTIFY_TYPES
|
||||||
from ..common import PersistentStoreMode
|
from ..common import PersistentStoreMode
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex, is_uuid, parse_list, parse_bool
|
||||||
from ..utils import is_uuid
|
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,7 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex, parse_bool
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,8 +33,7 @@ from uuid import uuid4
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ from json import dumps
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Used to break path apart into list of targets
|
# Used to break path apart into list of targets
|
||||||
|
|
|
@ -41,10 +41,8 @@ import requests
|
||||||
from json import dumps
|
from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import (
|
||||||
from ..utils import is_phone_no
|
parse_bool, is_phone_no, parse_phone_no, validate_regex)
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,8 @@ import requests
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_email
|
from ..utils.parse import (
|
||||||
from ..utils import is_phone_no
|
is_email, is_phone_no, parse_list, parse_bool, validate_regex)
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ import requests
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,8 @@ from json import dumps
|
||||||
from json import loads
|
from json import loads
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..utils import is_email
|
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import is_email, parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..attachment.base import AttachBase
|
from ..attachment.base import AttachBase
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ import requests
|
||||||
|
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Syntax:
|
# Syntax:
|
||||||
|
|
|
@ -34,8 +34,7 @@ from itertools import chain
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Used to detect and parse channels
|
# Used to detect and parse channels
|
||||||
|
|
|
@ -32,7 +32,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,7 @@ import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex, parse_bool
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,7 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..conversion import convert_between
|
from ..conversion import convert_between
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..attachment.base import AttachBase
|
from ..attachment.base import AttachBase
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,7 @@ from json import loads
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from .. import exception
|
from .. import exception
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,7 @@ from itertools import chain
|
||||||
from json import dumps, loads
|
from json import dumps, loads
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Used to detect a Device and Topic
|
# Used to detect a Device and Topic
|
||||||
|
|
|
@ -57,9 +57,7 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool, validate_regex
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from .. import __title__, __version__
|
from .. import __title__, __version__
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,7 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex, parse_list
|
||||||
from ..utils import parse_list
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@ from ..url import PrivacyMode
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, parse_bool
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
IS_CHANNEL = re.compile(r'^#(?P<name>[A-Za-z0-9_-]+)$')
|
IS_CHANNEL = re.compile(r'^#(?P<name>[A-Za-z0-9_-]+)$')
|
||||||
|
|
|
@ -31,7 +31,7 @@ import socket
|
||||||
|
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_bool
|
from ..utils.parse import parse_bool, validate_regex
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,7 @@ from .base import NotifyBase
|
||||||
from .. import exception
|
from .. import exception
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_list
|
from ..utils.parse import parse_list, is_email, validate_regex
|
||||||
from ..utils import is_email
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ import requests
|
||||||
|
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -99,10 +99,8 @@ from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import parse_emails
|
from ..utils.parse import parse_emails, validate_regex, is_email
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..utils import is_email
|
|
||||||
|
|
||||||
# Our Regin Identifier
|
# Our Regin Identifier
|
||||||
# support us-gov-west-1 syntax as well
|
# support us-gov-west-1 syntax as well
|
||||||
|
|
|
@ -34,8 +34,7 @@ import requests
|
||||||
import json
|
import json
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,7 @@ import json
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,7 @@ from json import dumps
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from .. import exception
|
from .. import exception
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, parse_bool
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import validate_regex
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
from base64 import urlsafe_b64encode
|
from base64 import urlsafe_b64encode
|
||||||
|
|
|
@ -42,9 +42,7 @@ import json
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import is_phone_no, parse_phone_no, validate_regex
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -82,10 +82,8 @@ from .base import NotifyBase
|
||||||
from ..common import NotifyImageSize
|
from ..common import NotifyImageSize
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..common import NotifyFormat
|
from ..common import NotifyFormat
|
||||||
from ..utils import is_email
|
from ..utils.parse import (
|
||||||
from ..utils import parse_bool
|
is_email, parse_bool, parse_list, validate_regex)
|
||||||
from ..utils import parse_list
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
# Extend HTTP Error Messages
|
# Extend HTTP Error Messages
|
||||||
|
|
|
@ -34,10 +34,8 @@ from itertools import chain
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from .. import exception
|
from .. import exception
|
||||||
from ..utils import validate_regex
|
from ..utils.parse import (
|
||||||
from ..utils import is_phone_no
|
validate_regex, is_phone_no, parse_phone_no, parse_bool)
|
||||||
from ..utils import parse_phone_no
|
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..url import PrivacyMode
|
from ..url import PrivacyMode
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
|
@ -37,10 +37,8 @@
|
||||||
import requests
|
import requests
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
from ..common import NotifyType
|
from ..common import NotifyType
|
||||||
from ..utils import is_phone_no
|
from ..utils.parse import (
|
||||||
from ..utils import parse_phone_no
|
is_phone_no, parse_phone_no, parse_bool, validate_regex)
|
||||||
from ..utils import parse_bool
|
|
||||||
from ..utils import validate_regex
|
|
||||||
from ..locale import gettext_lazy as _
|
from ..locale import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue