mirror of https://github.com/caronc/apprise
coverage/code cleanup
parent
b1aded27d8
commit
67779d8072
|
@ -70,6 +70,14 @@ from ..utils.templates import TemplateType, apply_template
|
||||||
from .base import NotifyBase
|
from .base import NotifyBase
|
||||||
|
|
||||||
|
|
||||||
|
class APIVersion:
|
||||||
|
"""
|
||||||
|
Define API Versions
|
||||||
|
"""
|
||||||
|
WORKFLOW = "2016-06-01"
|
||||||
|
POWER_AUTOMATE = "2022-03-01-preview"
|
||||||
|
|
||||||
|
|
||||||
class NotifyWorkflows(NotifyBase):
|
class NotifyWorkflows(NotifyBase):
|
||||||
"""A wrapper for Microsoft Workflows (MS Teams) Notifications."""
|
"""A wrapper for Microsoft Workflows (MS Teams) Notifications."""
|
||||||
|
|
||||||
|
@ -156,17 +164,17 @@ class NotifyWorkflows(NotifyBase):
|
||||||
"default": True,
|
"default": True,
|
||||||
"map_to": "include_image",
|
"map_to": "include_image",
|
||||||
},
|
},
|
||||||
"power_automate": {
|
"pa": {
|
||||||
"name": _("Power Automate"),
|
"name": _("Use Power Automate URL"),
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default": False,
|
"default": False,
|
||||||
"map_to": "power_automate",
|
"map_to": "power_automate",
|
||||||
},
|
},
|
||||||
|
"powerautomate": {"alias_of": "pa"},
|
||||||
"wrap": {
|
"wrap": {
|
||||||
"name": _("Wrap Text"),
|
"name": _("Wrap Text"),
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default": True,
|
"default": True,
|
||||||
"map_to": "wrap",
|
|
||||||
},
|
},
|
||||||
"template": {
|
"template": {
|
||||||
"name": _("Template Path"),
|
"name": _("Template Path"),
|
||||||
|
@ -181,11 +189,9 @@ class NotifyWorkflows(NotifyBase):
|
||||||
"ver": {
|
"ver": {
|
||||||
"name": _("API Version"),
|
"name": _("API Version"),
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"default": "2016-06-01",
|
|
||||||
"pa_default": "2022-03-01-preview",
|
|
||||||
"map_to": "version",
|
"map_to": "version",
|
||||||
},
|
},
|
||||||
"api-version": {"alias_of": "ver"},
|
"version": {"alias_of": "ver"},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -239,7 +245,7 @@ class NotifyWorkflows(NotifyBase):
|
||||||
self.power_automate = bool(
|
self.power_automate = bool(
|
||||||
power_automate
|
power_automate
|
||||||
if power_automate is not None
|
if power_automate is not None
|
||||||
else self.template_args["power_automate"]["default"]
|
else self.template_args["pa"]["default"]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Wrap Text
|
# Wrap Text
|
||||||
|
@ -257,11 +263,10 @@ class NotifyWorkflows(NotifyBase):
|
||||||
|
|
||||||
# Prepare Version
|
# Prepare Version
|
||||||
# The default is taken from the template_args
|
# The default is taken from the template_args
|
||||||
default_api_version = self.template_args["ver"]["default"]
|
# - If using power_automate, the API version required is different.
|
||||||
|
default_api_version = (
|
||||||
# If using power_automate, the API version required is different.
|
APIVersion.POWER_AUTOMATE
|
||||||
if self.power_automate:
|
if self.power_automate else APIVersion.WORKFLOW)
|
||||||
default_api_version = self.template_args["ver"]["pa_default"]
|
|
||||||
|
|
||||||
self.api_version = (
|
self.api_version = (
|
||||||
version
|
version
|
||||||
|
@ -509,7 +514,7 @@ class NotifyWorkflows(NotifyBase):
|
||||||
params = {
|
params = {
|
||||||
"image": "yes" if self.include_image else "no",
|
"image": "yes" if self.include_image else "no",
|
||||||
"wrap": "yes" if self.wrap else "no",
|
"wrap": "yes" if self.wrap else "no",
|
||||||
"power_automate": "yes" if self.power_automate else "no",
|
"pa": "yes" if self.power_automate else "no",
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.template:
|
if self.template:
|
||||||
|
@ -518,9 +523,10 @@ class NotifyWorkflows(NotifyBase):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Store our version if it differs from default
|
# Store our version if it differs from default
|
||||||
if (self.api_version != self.template_args["ver"]["default"]) and \
|
if (self.api_version != APIVersion.WORKFLOW
|
||||||
((not self.power_automate) or \
|
and not self.power_automate) or (
|
||||||
(self.api_version != self.template_args["ver"]["pa_default"])):
|
self.api_version != APIVersion.POWER_AUTOMATE
|
||||||
|
and self.power_automate):
|
||||||
# But only do so if we're not using power automate with the
|
# But only do so if we're not using power automate with the
|
||||||
# default version for that.
|
# default version for that.
|
||||||
params["ver"] = self.api_version
|
params["ver"] = self.api_version
|
||||||
|
@ -561,11 +567,14 @@ class NotifyWorkflows(NotifyBase):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Support Power Automate?
|
# Support Power Automate URL
|
||||||
results["power_automate"] = parse_bool(
|
results["power_automate"] = parse_bool(
|
||||||
results["qsd"].get(
|
results["qsd"].get(
|
||||||
"power_automate",
|
"powerautomate",
|
||||||
NotifyWorkflows.template_args["power_automate"]["default"]
|
results["qsd"].get(
|
||||||
|
"pa",
|
||||||
|
NotifyWorkflows.template_args["pa"]["default"]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -617,9 +626,9 @@ class NotifyWorkflows(NotifyBase):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Version
|
# Version
|
||||||
if "api-version" in results["qsd"] and results["qsd"]["api-version"]:
|
if "version" in results["qsd"] and results["qsd"]["version"]:
|
||||||
results["version"] = NotifyWorkflows.unquote(
|
results["version"] = NotifyWorkflows.unquote(
|
||||||
results["qsd"]["api-version"]
|
results["qsd"]["version"]
|
||||||
)
|
)
|
||||||
|
|
||||||
elif "ver" in results["qsd"] and results["qsd"]["ver"]:
|
elif "ver" in results["qsd"] and results["qsd"]["ver"]:
|
||||||
|
@ -636,7 +645,8 @@ class NotifyWorkflows(NotifyBase):
|
||||||
Support parsing the webhook straight out of workflows
|
Support parsing the webhook straight out of workflows
|
||||||
https://HOST:443/workflows/WORKFLOWID/triggers/manual/paths/invoke
|
https://HOST:443/workflows/WORKFLOWID/triggers/manual/paths/invoke
|
||||||
or
|
or
|
||||||
https://HOST:443/powerautomate/automations/direct/workflows/WORKFLOWID/triggers/manual/paths/invoke
|
https://HOST:443/powerautomate/automations/direct/workflows
|
||||||
|
/WORKFLOWID/triggers/manual/paths/invoke
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Match our workflows webhook URL and re-assemble
|
# Match our workflows webhook URL and re-assemble
|
||||||
|
@ -656,14 +666,14 @@ class NotifyWorkflows(NotifyBase):
|
||||||
if result:
|
if result:
|
||||||
# Determine if we're using power automate or not
|
# Determine if we're using power automate or not
|
||||||
power_automate = (
|
power_automate = (
|
||||||
"&power_automate=yes"
|
"&pa=yes"
|
||||||
if result.group("power_automate")
|
if result.group("power_automate")
|
||||||
else ""
|
else ""
|
||||||
)
|
)
|
||||||
|
|
||||||
# Construct our URL
|
# Construct our URL
|
||||||
return NotifyWorkflows.parse_url(
|
return NotifyWorkflows.parse_url(
|
||||||
"{schema}://{host}{port}/{workflow}/{params}{power_automate}"
|
"{schema}://{host}{port}/{workflow}/{params}{pa}"
|
||||||
.format(
|
.format(
|
||||||
schema=NotifyWorkflows.secure_protocol[0],
|
schema=NotifyWorkflows.secure_protocol[0],
|
||||||
host=result.group("host"),
|
host=result.group("host"),
|
||||||
|
@ -674,7 +684,7 @@ class NotifyWorkflows(NotifyBase):
|
||||||
),
|
),
|
||||||
workflow=result.group("workflow"),
|
workflow=result.group("workflow"),
|
||||||
params=result.group("params"),
|
params=result.group("params"),
|
||||||
power_automate=power_automate,
|
pa=power_automate,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -136,12 +136,32 @@ apprise_url_tests = (
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"workflows://host:443/workflow1e/signature/?power_automate=yes",
|
"workflows://host:443/workflow1e/signature/?powerautomate=yes",
|
||||||
|
{
|
||||||
|
# support power_automate flag
|
||||||
|
"instance": NotifyWorkflows,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"workflows://host:443/workflow1e/signature/?pa=yes&ver=1995-01-01",
|
||||||
|
{
|
||||||
|
# support power_automate flag with ver flag
|
||||||
|
"instance": NotifyWorkflows,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"workflows://host:443/workflow1e/signature/?pa=yes&version=1995-01-01",
|
||||||
|
{
|
||||||
|
# support power_automate flag with version flag
|
||||||
|
"instance": NotifyWorkflows,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"workflows://host:443/workflow1e/signature/?pa=yes",
|
||||||
{
|
{
|
||||||
# support power_automate flag
|
# support power_automate flag
|
||||||
"instance": NotifyWorkflows,
|
"instance": NotifyWorkflows,
|
||||||
# Our expected power_automate flag (defaults to False)
|
|
||||||
"self": {"power_automate": True},
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
# Support native URLs
|
# Support native URLs
|
||||||
|
@ -171,8 +191,6 @@ apprise_url_tests = (
|
||||||
{
|
{
|
||||||
# Power-Automate alternative URL - All tokens provided - we're good
|
# Power-Automate alternative URL - All tokens provided - we're good
|
||||||
"instance": NotifyWorkflows,
|
"instance": NotifyWorkflows,
|
||||||
# Our expected power_automate flag (defaults to False)
|
|
||||||
"self": {"power_automate": True},
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
|
Loading…
Reference in New Issue