NotificationsΒΆ
This library also includes some basic tools to ease notification handling. To
use Misfit’s Notification API with your web application, the first thing you
need to do is set up an endpoint to accept POST requests on the domain you
specified when you created your app, like
http://example.com/misfit/notification/
if your application domain is
http://example.com
.
Now, when you handle the request, just create a MisfitNotification
object with the body of the request as an argument. The
MisfitNotification
constructor automatically verifies the signature of
the SNS message so you can feel secure in the knowledge that the message is
legitimate. It will raise cryptography.exceptions.InvalidSignature
if
the signature is not valid.
The MisfitNotification
class handles both subscription confirmation
messages and regular update messages. You can check the type of message by
looking at the Type
attribute, which will be either
'SubscriptionConfirmation'
or 'Notification'
. For a
Notification
message, you will find the updates as a list in a
Message
attribute. After you process the updates (which can take no
longer than
15 seconds)
make sure to respond with an HTTP status of 200, otherwise SNS may try to
deliver it again. A full workflow should look something like this:
>>> from misfit.notification import MisfitNotification
>>> notification = MisfitNotification(content)
>>> if notification.Type == 'Notification':
>>> for message in notification.Message:
>>> if message.type == 'goals':
>>> # Handle goal update
>>> # Handle other message types
>>> # Give an empty response with a 200 status code
Once you have your endpoint up and running, go to your app and add your endpoint as a subscription hook URL, making sure the format is json. Click “Test Endpoint” and if all goes well, the verification should seamlessly take place. If not, please file an issue and we will try and help you debug. Now switch on all the resources you would like to receive and click “Update”. Soon you will be receiving Misfit notifications!