From addcdcc59cfc1b8eddfdccd30bdee30849a75c52 Mon Sep 17 00:00:00 2001 From: "Jonathan D. Backhaus" Date: Tue, 18 Feb 2020 08:41:14 -0500 Subject: [PATCH 1/7] Baseline test skeleton for webhook backend --- ntfy/backends/webhook.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ntfy/backends/webhook.py diff --git a/ntfy/backends/webhook.py b/ntfy/backends/webhook.py new file mode 100644 index 0000000..069a149 --- /dev/null +++ b/ntfy/backends/webhook.py @@ -0,0 +1,6 @@ +from requests import Request + + +def notify(title, message, url): + + req = Request('POST', url, data={"text": message}, headers={"Content-type": "application/json"}) \ No newline at end of file From d62f8ca33eebcfe6bc6ec834a82fd253b495856d Mon Sep 17 00:00:00 2001 From: "Jonathan D. Backhaus" Date: Tue, 18 Feb 2020 09:18:19 -0500 Subject: [PATCH 2/7] Working baseline --- ntfy/backends/webhook.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ntfy/backends/webhook.py b/ntfy/backends/webhook.py index 069a149..30fbf0a 100644 --- a/ntfy/backends/webhook.py +++ b/ntfy/backends/webhook.py @@ -1,6 +1,6 @@ -from requests import Request +import requests -def notify(title, message, url): +def notify(title, message, url, retcode=None): - req = Request('POST', url, data={"text": message}, headers={"Content-type": "application/json"}) \ No newline at end of file + req = requests.post(url, json={"text": message}) \ No newline at end of file From cadacb0ac6577656a46821045ff79b5f386f6440 Mon Sep 17 00:00:00 2001 From: "Jonathan D. Backhaus" Date: Tue, 18 Feb 2020 09:24:13 -0500 Subject: [PATCH 3/7] Added title and formatting --- ntfy/backends/webhook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ntfy/backends/webhook.py b/ntfy/backends/webhook.py index 30fbf0a..f89d838 100644 --- a/ntfy/backends/webhook.py +++ b/ntfy/backends/webhook.py @@ -3,4 +3,4 @@ def notify(title, message, url, retcode=None): - req = requests.post(url, json={"text": message}) \ No newline at end of file + req = requests.post(url, json={"text": "*{}*: {}".format(title,message)}) \ No newline at end of file From df51809cc3bd6a0b1e98343c6e97f52e8979ee5e Mon Sep 17 00:00:00 2001 From: "Jonathan D. Backhaus" Date: Tue, 18 Feb 2020 09:28:11 -0500 Subject: [PATCH 4/7] Updated baseline formatting to match Pushover --- ntfy/backends/webhook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ntfy/backends/webhook.py b/ntfy/backends/webhook.py index f89d838..67002df 100644 --- a/ntfy/backends/webhook.py +++ b/ntfy/backends/webhook.py @@ -3,4 +3,4 @@ def notify(title, message, url, retcode=None): - req = requests.post(url, json={"text": "*{}*: {}".format(title,message)}) \ No newline at end of file + requests.post(url, json={"text": "*{}*\n{}".format(title, message)}) From f38d06ec080c6b50601a5db94d6d636448bca161 Mon Sep 17 00:00:00 2001 From: "Jonathan D. Backhaus" Date: Tue, 18 Feb 2020 09:40:36 -0500 Subject: [PATCH 5/7] Baseline test for webhook backend --- tests/test_webhook.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 tests/test_webhook.py diff --git a/tests/test_webhook.py b/tests/test_webhook.py new file mode 100644 index 0000000..a313000 --- /dev/null +++ b/tests/test_webhook.py @@ -0,0 +1,17 @@ +from unittest import TestCase + +from mock import patch +from ntfy.backends.webhook import notify +from ntfy.config import USER_AGENT + + +class TestWebhook(TestCase): + @patch('requests.post') + def test_basic(self, mock_post): + url = 'https://hooks.slack.com/services/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' + notify('title', 'message', url) + mock_post.assert_called_once_with( + url, + json={'title': 'title', + 'message': 'message'}, + headers={'User-Agent': USER_AGENT}) From 6d2ba5e515d4b14b7cf8ea710919d7df549e99c9 Mon Sep 17 00:00:00 2001 From: "Jonathan D. Backhaus" Date: Tue, 18 Feb 2020 09:49:37 -0500 Subject: [PATCH 6/7] Update backend and test to match standard code policies --- ntfy/backends/webhook.py | 7 ++++++- tests/test_webhook.py | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ntfy/backends/webhook.py b/ntfy/backends/webhook.py index 67002df..2459bda 100644 --- a/ntfy/backends/webhook.py +++ b/ntfy/backends/webhook.py @@ -1,6 +1,11 @@ import requests +from ..config import USER_AGENT def notify(title, message, url, retcode=None): - requests.post(url, json={"text": "*{}*\n{}".format(title, message)}) + payload = {"text": "*{}*\n{}".format(title, message)} + headers = {'User-Agent': USER_AGENT} + + response = requests.post(url, json=payload, headers=headers) + response.raise_for_status() diff --git a/tests/test_webhook.py b/tests/test_webhook.py index a313000..9db4e60 100644 --- a/tests/test_webhook.py +++ b/tests/test_webhook.py @@ -12,6 +12,5 @@ def test_basic(self, mock_post): notify('title', 'message', url) mock_post.assert_called_once_with( url, - json={'title': 'title', - 'message': 'message'}, + json={'text': '*{}*\n{}'.format('title', 'message')}, headers={'User-Agent': USER_AGENT}) From 77d5d46bf2daabe3befe0c00837d59d18ec36a40 Mon Sep 17 00:00:00 2001 From: "Backhaus, Jonathan D" Date: Wed, 19 Feb 2020 11:06:45 -0500 Subject: [PATCH 7/7] Add optional 'verify' argument to specify bundle (or disable cert. verification) --- ntfy/backends/webhook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ntfy/backends/webhook.py b/ntfy/backends/webhook.py index 2459bda..dd67381 100644 --- a/ntfy/backends/webhook.py +++ b/ntfy/backends/webhook.py @@ -2,10 +2,10 @@ from ..config import USER_AGENT -def notify(title, message, url, retcode=None): +def notify(title, message, url, verify=True, retcode=None): payload = {"text": "*{}*\n{}".format(title, message)} headers = {'User-Agent': USER_AGENT} - response = requests.post(url, json=payload, headers=headers) + response = requests.post(url, json=payload, headers=headers, verify=verify) response.raise_for_status()