Add initial implementation for sending notifications

This commit is contained in:
Sergey Petrov
2016-02-01 13:02:19 +03:00
parent f2d5f9e5d0
commit 29f818cf43
3 changed files with 45 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
from enum import Enum
from json import dumps
from hyper import HTTP20Connection
from hyper.tls import init_context
class NotificationPriority(Enum):
Immediate = 10
Delayed = 5
class APNsClient(object):
def __init__(self, cert_file, use_sandbox=False, use_alternate_port=False):
server = 'api.development.push.apple.com' if use_sandbox else 'api.push.apple.com'
port = 2197 if use_alternate_port else 443
ssl_context = init_context()
ssl_context.load_cert_chain(cert_file)
self.__connection = HTTP20Connection(server, port, ssl_context=ssl_context)
def send_notification(self, token_hex, notification, topic=None):
json_payload = dumps(notification.dict(), ensure_ascii=False, separators=(',',':')).encode('utf-8')
headers = {}
if topic:
headers['apns-topic'] = topic
url = '/3/device/{}'.format(token_hex)
self.__connection.request('POST', url, json_payload, headers)