forked from platypush/platypush
Handle the case where the condition is a serialized dictionary
This commit is contained in:
parent
db45d7ecbf
commit
67413c02cd
1 changed files with 12 additions and 4 deletions
|
@ -6,6 +6,7 @@ from flask.wrappers import Response
|
||||||
from platypush.backend.http.app import template_folder
|
from platypush.backend.http.app import template_folder
|
||||||
from platypush.backend.http.app.utils import logger, send_message
|
from platypush.backend.http.app.utils import logger, send_message
|
||||||
from platypush.config import Config
|
from platypush.config import Config
|
||||||
|
from platypush.event.hook import EventCondition
|
||||||
from platypush.message.event.http.hook import WebhookEvent
|
from platypush.message.event.http.hook import WebhookEvent
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,6 +18,16 @@ __routes__ = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def matches_condition(event: WebhookEvent, hook):
|
||||||
|
if isinstance(hook, dict):
|
||||||
|
condition = hook.get('condition', {})
|
||||||
|
else:
|
||||||
|
condition = hook.condition
|
||||||
|
|
||||||
|
condition = EventCondition.build(condition)
|
||||||
|
return event.matches_condition(condition)
|
||||||
|
|
||||||
|
|
||||||
@hook.route(
|
@hook.route(
|
||||||
'/hook/<hook_name>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS']
|
'/hook/<hook_name>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS']
|
||||||
)
|
)
|
||||||
|
@ -43,10 +54,7 @@ def hook_route(hook_name):
|
||||||
matching_hooks = [
|
matching_hooks = [
|
||||||
hook
|
hook
|
||||||
for hook in Config.get_event_hooks().values()
|
for hook in Config.get_event_hooks().values()
|
||||||
if hook.condition.type == WebhookEvent
|
if matches_condition(event, hook)
|
||||||
and hook.condition.args.get('hook') == hook_name
|
|
||||||
and request.method.lower()
|
|
||||||
== hook.condition.args.get('method', request.method).lower()
|
|
||||||
]
|
]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue