From 1ff88e9340236e971321f9874e2be0f2e14c24f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=BBarnowiecki?= Date: Thu, 23 Mar 2017 14:16:14 +0100 Subject: [PATCH 1/7] Allow retrieving device information --- README.md | 2 +- onesignalclient/user_client.py | 4 ++++ tests/base_test.py | 8 ++++++++ tests/test_user_client.py | 8 ++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 80d3963..8a38044 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ List of API methods to be covered by our client. - [U] Create an app - [U] Update an app - [A] View devices -- View device +- ~~View device~~ - [U] Add a device - Edit device - [U] New session diff --git a/onesignalclient/user_client.py b/onesignalclient/user_client.py index 0ebb093..0015568 100644 --- a/onesignalclient/user_client.py +++ b/onesignalclient/user_client.py @@ -28,3 +28,7 @@ def view_apps(self): def view_app(self, app_id): endpoint = 'apps/%s' % (app_id) return self.get(self._url(endpoint)) + + def view_device(self, player_id, app_id): + endpoint = 'players/%s?%s' % (player_id, app_id) + return self.get(self._url(endpoint)) diff --git a/tests/base_test.py b/tests/base_test.py index 87e1ce7..63640ad 100644 --- a/tests/base_test.py +++ b/tests/base_test.py @@ -26,6 +26,14 @@ class BaseTest(): 'uri': re.compile('%s/apps/(\w|\-)+' % (base_url)), 'status': codes.not_found }, + 'test_view_device': { + 'uri': re.compile('%s/players/(\w|\-)+' % (base_url)), + 'body': '{"identifier": "ce777617da7f548fe7a9ab6febb56cf39fba6d2"}' + }, + 'test_view_device_not_found': { + 'uri': re.compile('%s/players/(\w|\-)+' % (base_url)), + 'status': codes.not_found + }, 'test_create_notification': { 'method': responses.POST, 'uri': '%s/notifications' % (base_url), diff --git a/tests/test_user_client.py b/tests/test_user_client.py index 35d68f3..4c08b49 100644 --- a/tests/test_user_client.py +++ b/tests/test_user_client.py @@ -30,3 +30,11 @@ def test_view_app(self, user_client, app_id): def test_view_app_not_found(self, user_client, app_id): with pytest.raises(HTTPError): user_client.view_app(app_id) + + def test_view_device(self, user_client, player_id_1, app_id): + device = user_client.view_device(player_id_1, app_id) + assert device.get('identifier', False) + + def test_view_device_not_found(self, user_client, player_id_1, app_id): + with pytest.raises(HTTPError): + user_client.view_device(player_id_1, app_id) From 43e421045ffd2274283c0ffc799f9cc68fce5b2a Mon Sep 17 00:00:00 2001 From: Tezeusz Woronko Date: Wed, 25 Apr 2018 15:29:07 +0200 Subject: [PATCH 2/7] added url param to payload --- onesignalclient/notification.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/onesignalclient/notification.py b/onesignalclient/notification.py index 07591aa..83f7b0a 100644 --- a/onesignalclient/notification.py +++ b/onesignalclient/notification.py @@ -142,6 +142,7 @@ def __init__(self, app_id, mode=SEGMENTS_MODE): self.contents = {'en': 'Default message.'} self.headings = {} self.subtitle = {} + self.url = None self.data = {} self.small_icon = None self.large_icon = None @@ -174,7 +175,7 @@ def get_payload_for_request(self): # Should change when template/content_available support be done 'contents': self.contents } - + # Mode related settings if self.mode == self.DEVICES_MODE: payload.update({'include_player_ids': self.include_player_ids}) @@ -189,6 +190,9 @@ def get_payload_for_request(self): if len(self.subtitle) > 0: payload.update({'subtitle': self.subtitle}) + if self.url: + payload.update({'url': self.url}) + if self.small_icon: payload.update({'small_icon': self.small_icon}) From 296762296ba8e4c8cee8d14ef366791ed565f14f Mon Sep 17 00:00:00 2001 From: Tezeusz Woronko Date: Wed, 25 Apr 2018 15:33:04 +0200 Subject: [PATCH 3/7] Allow for attaching launch url to notiifcation --- onesignalclient/notification.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/onesignalclient/notification.py b/onesignalclient/notification.py index 07591aa..83f7b0a 100644 --- a/onesignalclient/notification.py +++ b/onesignalclient/notification.py @@ -142,6 +142,7 @@ def __init__(self, app_id, mode=SEGMENTS_MODE): self.contents = {'en': 'Default message.'} self.headings = {} self.subtitle = {} + self.url = None self.data = {} self.small_icon = None self.large_icon = None @@ -174,7 +175,7 @@ def get_payload_for_request(self): # Should change when template/content_available support be done 'contents': self.contents } - + # Mode related settings if self.mode == self.DEVICES_MODE: payload.update({'include_player_ids': self.include_player_ids}) @@ -189,6 +190,9 @@ def get_payload_for_request(self): if len(self.subtitle) > 0: payload.update({'subtitle': self.subtitle}) + if self.url: + payload.update({'url': self.url}) + if self.small_icon: payload.update({'small_icon': self.small_icon}) From 649f9a3446bf5e572600f9b4a7cb95bd17cb1faf Mon Sep 17 00:00:00 2001 From: Tezeusz Woronko Date: Tue, 5 Jun 2018 10:34:42 +0200 Subject: [PATCH 4/7] added send_after option --- onesignalclient/notification.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/onesignalclient/notification.py b/onesignalclient/notification.py index 83f7b0a..f5645bb 100644 --- a/onesignalclient/notification.py +++ b/onesignalclient/notification.py @@ -142,6 +142,7 @@ def __init__(self, app_id, mode=SEGMENTS_MODE): self.contents = {'en': 'Default message.'} self.headings = {} self.subtitle = {} + self.send_after = None self.url = None self.data = {} self.small_icon = None @@ -190,6 +191,9 @@ def get_payload_for_request(self): if len(self.subtitle) > 0: payload.update({'subtitle': self.subtitle}) + if self.send_after: + payload.update({'send_after': self.send_after}) + if self.url: payload.update({'url': self.url}) From 72cecadf6a89431de7d02dd7785cc6ac694cc910 Mon Sep 17 00:00:00 2001 From: Tezeusz Woronko Date: Fri, 6 Jul 2018 09:59:03 +0200 Subject: [PATCH 5/7] added android accent color --- onesignalclient/notification.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/onesignalclient/notification.py b/onesignalclient/notification.py index f5645bb..fba0e38 100644 --- a/onesignalclient/notification.py +++ b/onesignalclient/notification.py @@ -174,7 +174,8 @@ def get_payload_for_request(self): payload = { 'app_id': self.app_id, # Should change when template/content_available support be done - 'contents': self.contents + 'contents': self.contents, + 'android_accent_color': 'FFE42D1F', } # Mode related settings From f65a0cb7c4152d0a5de7835665887fe75e5f350d Mon Sep 17 00:00:00 2001 From: Tezeusz Woronko Date: Mon, 23 Jul 2018 15:47:53 +0200 Subject: [PATCH 6/7] added image support to push notifications --- onesignalclient/notification.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/onesignalclient/notification.py b/onesignalclient/notification.py index fba0e38..9f6d251 100644 --- a/onesignalclient/notification.py +++ b/onesignalclient/notification.py @@ -149,6 +149,7 @@ def __init__(self, app_id, mode=SEGMENTS_MODE): self.large_icon = None self.ios_badge_type = self.IOS_BADGE_TYPE_NONE self.ios_badge_count = 0 + self.image = None def _validate_content_dict(self, value): """ @@ -204,6 +205,15 @@ def get_payload_for_request(self): if self.large_icon: payload.update({'large_icon': self.large_icon}) + if self.image: + payload.update({ + 'mutable_content': True, + 'ios_attachments': { + 'id': self.image + }, + 'big_picture': self.image + }) + if self.ios_badge_count > 0: payload.update({ 'ios_badgeType': self.ios_badge_type, From d1195c3f52a0c66b82ce9a27af20f2d992941754 Mon Sep 17 00:00:00 2001 From: Tezeusz Woronko Date: Wed, 11 Sep 2019 14:44:22 +0200 Subject: [PATCH 7/7] Notification: additional data always sent --- onesignalclient/notification.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/onesignalclient/notification.py b/onesignalclient/notification.py index 83f7b0a..b3e64a4 100644 --- a/onesignalclient/notification.py +++ b/onesignalclient/notification.py @@ -175,14 +175,13 @@ def get_payload_for_request(self): # Should change when template/content_available support be done 'contents': self.contents } - + # Mode related settings if self.mode == self.DEVICES_MODE: payload.update({'include_player_ids': self.include_player_ids}) # Common parameters - if len(self.data) > 0: - payload.update({'data': self.data}) + payload.update({'data': self.data}) if len(self.headings) > 0: payload.update({'headings': self.headings})