Go to file
jrconlin 1d218ce802 feat: make python2/3 compatible
Closes #3
2016-06-06 14:02:00 -07:00
pywebpush feat: make python2/3 compatible 2016-06-06 14:02:00 -07:00
.coveragerc feat: make python2/3 compatible 2016-06-06 14:02:00 -07:00
.editorconfig feat: adding travis 2016-04-27 11:55:09 -07:00
.gitignore WIP: Initial version 2016-04-25 14:54:57 -07:00
.travis.yml feat: adding travis 2016-04-27 11:55:09 -07:00
CHANGELOG.md feat: make python2/3 compatible 2016-06-06 14:02:00 -07:00
LICENSE Initial commit 2016-04-25 14:36:57 -07:00
MANIFEST.in bug: fix pypi distro 2016-04-27 13:07:52 -07:00
README.md feat: adding travis 2016-04-27 11:55:09 -07:00
requirements.txt feat: adding travis 2016-04-27 11:55:09 -07:00
setup.cfg feat: adding travis 2016-04-27 11:55:09 -07:00
setup.py feat: make python2/3 compatible 2016-06-06 14:02:00 -07:00
test-requirements.txt feat: Added tests, restructured code 2016-04-27 09:40:57 -07:00

README.md

Build_Status

Webpush Data encryption library for Python

This is a work in progress.

Installation

You'll need to run python virtualenv. Then

bin/pip install -r requirements.txt
bin/python setup.py develop

Usage

In the browser, the promise handler for registration.pushManager.subscribe() returns a PushSubscription object. This object has a .toJSON() method that will return a JSON object that contains all the info we need to encrypt and push data.

As illustration, a subscription info object may look like:

{"endpoint": "https://updates.push.services.mozilla.com/push/v1/gAA...", "keys": {"auth": "k8J...", "p256dh": "BOr..."}}

How you send the PushSubscription data to your backend, store it referenced to the user who requested it, and recall it when there's new a new push subscription update is left as an excerise for the reader.

The data can be any serial content (string, bit array, serialized JSON, etc), but be sure that your receiving application is able to parse and understand it. (e.g. data = "Mary had a little lamb.")

headers is a dictionary of additional HTTP header values (e.g. VAPID self identification headers). It is optional and may be omitted.

to send:

WebPusher(subscription_info).send(data, headers)

You can also simply encode the data to send later by calling

encoded = WebPush(subscription_info).encode(data)