Package: misfit
python-misfitMisfit API Python Client ImplementationRequirementsPython >= 2.6, Python >= 3.3, or PyPy. You can download it fromherePip. If you have Python >= 2.7.9 or >= 3.4 then you already havepip. Otherwise, please followthese instructionsInstallingOnce you have satisfied the requirements listed above, install by running the
following command from theterminal:pip install misfitQuick StartInstall withpip install misfitCreate an appwith “Application Domain” set tohttp://127.0.0.1:8080/. Now use the “App key” and “App secret” in the following
command:misfit authorize --client_id=<app_key> --client_secret=<app_secret>That will save the necessary credentials for making further API calls to a file
called “misfit.cfg”. These credentials should be kept private. You can use same
the command-line client to access everything in theResource API. You can also access the
same resources using the Python API:>>> from misfit import Misfit
>>> misfit = Misfit(<client_id>, <client_secret>, <access_token>)
>>> print(misfit.profile())
{u'gender': u'male', u'birthday': u'1981-07-18', u'userId': u'scrubbed', u'name': u'Brad Pitcher'}Slow StartAfter you have installed andcreated your misfit appyou can authorize and use the API with your own web server rather than the
built-in CherryPy server like so:>>> from misfit.auth import MisfitAuth
>>> auth = MisfitAuth(<client_id>, <client_secret>, redirect_uri=<redirect_uri>)
>>> auth_url = auth.authorize_url()Now redirect the user toauth_url. When control returns to your web
server at the endpoint specified in<redirect_uri>, you will receivecodeandstateGET params you can pass to thefetch_tokenmethod, which will returnaccess_token, which is
needed for further API calls:>>> access_token = auth.fetch_token(<code>, <state>)
>>> from misfit import Misfit
>>> misfit = Misfit(<client_id>, <client_secret>, <access_token>)
>>> print(misfit.profile())
{u'gender': u'male', u'birthday': u'1981-07-18', u'userId': u'scrubbed', u'name': u'Brad Pitcher'}NotificationsThis 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, likehttp://example.com/misfit/notification/if your application domain ishttp://example.com.Now, when you handle the request, just create aMisfitNotificationobject with the body of the request as an argument. TheMisfitNotificationconstructor automatically verifies the signature of
the SNS message so you can feel secure in the knowledge that the message is
legitimate. It will raisecryptography.exceptions.InvalidSignatureif
the signature is not valid.TheMisfitNotificationclass handles both subscription confirmation
messages and regular update messages. You can check the type of message by
looking at theTypeattribute, which will be either'SubscriptionConfirmation'or'Notification'. For aNotificationmessage, you will find the updates as a list in aMessageattribute. After you process the updates (which can take no
longer than15 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 codeOnce you have your endpoint up and running, go to yourappand 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, pleasefile an issueand 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!