Skip to content

Commit

Permalink
Add initial implementation for sending notifications
Browse files Browse the repository at this point in the history
  • Loading branch information
Pr0Ger committed Feb 1, 2016
1 parent f2d5f9e commit 29f818c
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
29 changes: 29 additions & 0 deletions apns2/client.py
Original file line number Diff line number Diff line change
@@ -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)
15 changes: 15 additions & 0 deletions apns2/client.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from typing import Optional

from apns2.payload import Payload


class APNsClient(object):
def __init__(self,
cert_file: str,
use_sandbox: bool = False,
use_alternate_port: bool = False) -> None: ...

def send_notification(self,
token_hex: str,
notification: Payload,
topic: Optional[str] = None) -> None: ...
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
name='apns2',
version='0.1.0',
packages=['apns2'],
requires=['hyper'],
url='',
license='MIT',
author='Petrov Sergey',
Expand Down

0 comments on commit 29f818c

Please sign in to comment.