From 5736e12bc3c90e1e74d165fc1f8571ceb93d2e6f Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sun, 12 Aug 2018 10:54:39 -0700 Subject: [PATCH] Format Webhook data strings only --- plexpy/helpers.py | 5 +---- plexpy/notification_handler.py | 33 ++++++++++++++++++++------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/plexpy/helpers.py b/plexpy/helpers.py index 40257948..102e9a00 100644 --- a/plexpy/helpers.py +++ b/plexpy/helpers.py @@ -1128,10 +1128,7 @@ def traverse_map(obj, func): for k, v in obj.iteritems(): new_obj[traverse_map(k, func)] = traverse_map(v, func) - elif isinstance(obj, basestring): + else: new_obj = func(obj) - else: - new_obj = obj - return new_obj diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py index 07498ccd..c14e559c 100644 --- a/plexpy/notification_handler.py +++ b/plexpy/notification_handler.py @@ -1058,20 +1058,27 @@ def build_notify_text(subject='', body='', notify_action=None, parameters=None, script_args = [] elif agent_id == 25: - try: - body = json.loads(body) - except ValueError as e: - logger.error(u"Tautulli NotificationHandler :: Unable to parse custom webhook json data: %s. Using fallback." % e) + if body: + try: + body = json.loads(body) + except ValueError as e: + logger.error(u"Tautulli NotificationHandler :: Unable to parse custom webhook json data: %s. Using fallback." % e) + body = '' - try: - body = json.dumps(helpers.traverse_map(body, - lambda x: custom_formatter.format(x, **parameters).decode(plexpy.SYS_ENCODING, 'ignore'))) - except LookupError as e: - logger.error(u"Tautulli NotificationHandler :: Unable to parse parameter %s in webhook data. Using fallback." % e) - body = '' - except Exception as e: - logger.error(u"Tautulli NotificationHandler :: Unable to parse custom webhook data: %s. Using fallback." % e) - body = '' + if body: + def str_format(s): + if isinstance(s, basestring): + return custom_formatter.format(s, **parameters).decode(plexpy.SYS_ENCODING, 'ignore') + return s + + try: + body = json.dumps(helpers.traverse_map(body, str_format)) + except LookupError as e: + logger.error(u"Tautulli NotificationHandler :: Unable to parse parameter %s in webhook data. Using fallback." % e) + body = '' + except Exception as e: + logger.error(u"Tautulli NotificationHandler :: Unable to parse custom webhook data: %s. Using fallback." % e) + body = '' else: try: