Merge branch 'master' of github.com:web-push-libs/pywebpush

This commit is contained in:
jr conlin 2017-05-26 10:28:06 -07:00
commit 6a6e26872e
7 changed files with 38 additions and 29 deletions

View File

@ -14,7 +14,8 @@ Source is available on
You'll need to run `python virtualenv`.
Then
```commandline
```
bin/pip install -r requirements.txt
bin/python setup.py develop
```
@ -29,6 +30,7 @@ object. This object has a .toJSON() method that will return a JSON object that c
and push data.
As illustration, a `subscription_info` object may look like:
```json
{"endpoint": "https://updates.push.services.mozilla.com/push/v1/gAA...", "keys": {"auth": "k8J...", "p256dh": "BOr..."}}
```
@ -44,14 +46,15 @@ In many cases, your code will be sending a single message to many
recipients. There's a "One Call" function which will make things
easier.
```pythonstub
from pywebpush import webpush
```python
from pywebpush import webpush
webpush(subscription_info,
data,
vapid_private_key="Private Key or File Path[1]",
vapid_claims={"sub": "mailto:YourEmailAddress"})
webpush(subscription_info,
data,
vapid_private_key="Private Key or File Path[1]",
vapid_claims={"sub": "mailto:YourEmailAddress"})
```
This will encode `data`, add the appropriate VAPID auth headers if required and send it to the push server identified
in the `subscription_info` block.
@ -74,13 +77,14 @@ pywebpush will attempt to auto-fill from the `endpoint`.
a base64 encoded DER formatted private key, or the path to an OpenSSL exported private key file.
e.g. the output of:
```commandline
```
openssl ecparam -name prime256v1 -genkey -noout -out private_key.pem
```
**Example**
```pythonstub
```python
from pywebpush import webpush, WebPushException
try:
@ -133,7 +137,8 @@ named `encrpypted.data`. This command is meant to be used for debugging purposes
**Example**
to send from Chrome using the old GCM mode:
```pythonstub
```python
WebPusher(subscription_info).send(data, headers, ttl, gcm_key)
```
@ -149,7 +154,7 @@ Encode the `data` for future use. On error, returns a `WebPushException`
**Example**
```pythonstub
```python
encoded_data = WebPush(subscription_info).encode(data)
```

View File

@ -12,7 +12,7 @@ Installation
You'll need to run ``python virtualenv``. Then
.. code:: commandline
::
bin/pip install -r requirements.txt
bin/python setup.py develop
@ -43,14 +43,14 @@ Sending Data using ``webpush()`` One Call
In many cases, your code will be sending a single message to many
recipients. There's a "One Call" function which will make things easier.
.. code:: pythonstub
.. code:: python
from pywebpush import webpush
from pywebpush import webpush
webpush(subscription_info,
data,
vapid_private_key="Private Key or File Path[1]",
vapid_claims={"sub": "mailto:YourEmailAddress"})
webpush(subscription_info,
data,
vapid_private_key="Private Key or File Path[1]",
vapid_claims={"sub": "mailto:YourEmailAddress"})
This will encode ``data``, add the appropriate VAPID auth headers if
required and send it to the push server identified in the
@ -84,13 +84,13 @@ file.
e.g. the output of:
.. code:: commandline
::
openssl ecparam -name prime256v1 -genkey -noout -out private_key.pem
**Example**
.. code:: pythonstub
.. code:: python
from pywebpush import webpush, WebPushException
@ -153,7 +153,7 @@ purposes.
to send from Chrome using the old GCM mode:
.. code:: pythonstub
.. code:: python
WebPusher(subscription_info).send(data, headers, ttl, gcm_key)
@ -171,7 +171,7 @@ Encode the ``data`` for future use. On error, returns a
**Example**
.. code:: pythonstub
.. code:: python
encoded_data = WebPush(subscription_info).encode(data)

6
convert_readme.sh Normal file → Executable file
View File

@ -1 +1,7 @@
#!/bin/sh
# You will need pandoc to be installed for this to work correctly, as well as the PyPI packages docutils and pygments
set -e
pandoc --from=markdown --to=rst --output README.rst README.md
python setup.py check --restructuredtext --strict --metadata

View File

@ -249,13 +249,11 @@ class WebPusher:
# use ';' instead of ',' to append the headers.
# see https://github.com/webpush-wg/webpush-encryption/issues/6
crypto_key += ';'
crypto_key += (
"keyid=p256dh;dh=" + encoded["crypto_key"].decode('utf8'))
crypto_key += ("dh=" + encoded["crypto_key"].decode('utf8'))
headers.update({
'crypto-key': crypto_key,
'content-encoding': content_encoding,
'encryption': "keyid=p256dh;salt=" +
encoded['salt'].decode('utf8'),
'encryption': "salt=" + encoded['salt'].decode('utf8'),
})
if gcm_key:
endpoint = 'https://android.googleapis.com/gcm/send'

View File

@ -265,7 +265,7 @@ class WebpushTestCase(unittest.TestCase):
"-H \"crypto-key: p256ecdsa=",
"-H \"content-encoding: aesgcm\"",
"-H \"authorization: WebPush ",
"-H \"encryption: keyid=p256dh;salt=",
"-H \"encryption: salt=",
"-H \"ttl: 0\"",
"-H \"content-length:"
]:

View File

@ -1,4 +1,4 @@
cryptography==1.8.1
http-ece==1.0.1
requests==2.13.0
py-vapid==1.2.1
py-vapid==1.2.3

View File

@ -3,7 +3,7 @@ import os
from setuptools import find_packages, setup
__version__ = "1.0.0"
__version__ = "1.0.2"
def read_from(file):