- Make your virtualenv.
Install the python packages:
pip install -r dev-reqs.txt
- Install Queuey from https://github.com/mozilla-services/queuey.
add
push
to theapplication_keys
section in queuey/etc/queuey-dev.ini:[application_keys] queuey = f25bfb8fe200475c8a0532a9cbe7651e push = f25bfb8fe200475c8a0532a9cbe7651e*
- Start Cassandra and Queuey.
Create the database:
cat etc/schema.sql | sqlite3 -echo etc/push.db
Start all the things:
circusd etc/circus-test.ini
Watch it go:
python client.py http://localhost:5011
The API server runs on http://localhost:5001 in dev mode and http://localhost:5011 in test mode.
There's a lot of moving pieces involved in the notifications service. These can all be controlled through circusd etc/circus-dev.ini. Here's what's running:
- paster serve etc/push-dev.ini
The main HTTP API server.
- python websockets.py etc/push-dev.ini
The websocket server.
- python router.py etc/push-dev.ini
The pubsub broker between the HTTP server and the websocket server.
- python monitor.py etc/push-dev.ini
A daemon that monitors the status of the websocket server.
export PUSH_TEST_CONFIG=./etc/push-test.ini
nosetests
If the tests appear to be stuck, you're experiencing the joy of asynchronous zeromq sockets. Kill it!
POST /queue/<queue>/
Add a new message to the queue.
Parameters:
* title: Primary text of the notification.
* body: Secondary text of the notification.
* actionUrl: URL to be opened if the user clicks on the notification.
* replaceId: A string which identifies a group of like messages. If the
user is offline, only the last message with the same replaceId will be
sent when the user comes back online.
Accepted content types:
* Content-Type: application/x-www-form-urlencoded
* Content-Type: application/json
POST /token/
>>> 200 OK {"token": <token>}
Create a new token. This token should be stored on the client for future
authentication.
POST /queue/
token=<token>&domain=<domain>
>>> 200 OK {"queue": http://example.com/queue/<queue>/}
Create a new queue.
* <token> should be a value created by POSTing to /token/.
* <domain> is the domain the queue belongs to.
PUT /queue/<queue>/
X-Auth-Token: <token>
timestamp=<timestamp>
Update the <timestamp> of the queue. Used to coordinate with other clients
on which messages have been read. The <token> used to create the queue must
be given for authentication.
GET /queue/<queue>/
X-Auth-Token: <token>
>>> 200 OK {"messages": [<message>...]}
Get messages from the queue. The <token> used to create the queue must be
given for authentication.
The format of a message:
TBD
Optional query parameters:
limit: The maximum number of messages to show.
since: If given, only return messages sent later than `since`.