jsonhome

Helpers for handling jsonhome documents

Introduction

The jsonhome library provides a simple way to build and consume compliant json-home documents.

Building

To build a jsonhome document you create a document and then add resources:

>>> import jsonhome

>>> doc = jsonhome.Document()

>>> doc.add_resource('http://mysite.com/rel/widgets',
...                  uri='/widgets{/widget_id}'
...                  uri_vars={'widget_id': 'http://mysite.com/param/widget'},
...                  allow_get=True,
...                  accept_post=['application/json'])

>>> print(doc.to_json())
{
    "resources": {
        "http://mysite.com/rel/widgets": {
            "href-template": "/widgets{/widget_id}",
            "href-vars": {
                "widget_id": "http://mysite.com/param/widget"
            },
            "hints": {
                "accept-post": [
                    "application/json"
                ],
                "allow": [
                    "GET",
                    "POST"
                ]
            }
        }
    }
}

Additional parameters to creating resources can be found on the module documentation.

Consuming

To consume a json-home document you load it and then fetch the URIs you need:

>>> doc = jsonhome.Document.from_json(data)

>>> print(doc.get_uri('http://mysite.com/rel/widgets', widget_id='1234')
'/widgets/1234'

Or for specific information you can find helpers on the resource:

>>> print(doc['http://mysite.com/rel/widgets'].href_vars)
{"widget_id": "http://mysite.com/param/widget"}