Bambu Webhooks

Create webhooks and allow users to assign URLs to them

About Bambu Webhooks

This package allows web apps to provide third-party integration via webhooks. You as the developer can trigger a webhook by name, and provide an interface whereby the user can manage the URL to post the webhook’s data to.

About Bambu Tools 2.0

This is part of a toolset called Bambu Tools. It’s being moved from a namespace of bambu to its own ‘root-level’ package, along with all the other tools in the set. If you’re upgrading from a version prior to 2.0, please make sure to update your code to use bambu_webhooks rather than bambu.webhooks.

Installation

Install the package via Pip:

pip install bambu-webhooks

Add it to your INSTALLED_APPS list:

INSTALLED_APPS = (
    ...
    'bambu_webhooks'
)

Add bambu_webhooks.urls to your URLconf:

urlpatterns = patterns('',
    ...
    url(r'^webhooks/', include('bambu_webhooks.urls')),
)

Run manage.py syncdb or manage.py migrate to setup the database tables.

Basic usage

Register a webhook within your models.py file.

from hashlib import md5
import bambu_webhooks

bambu_webhooks.site.register('webhook_name_',
    description = 'A description of the webhook'
)

In the save() method for your model, trigger any webhooks that have receivers attached, thus posting the data to the user’s specified URL.

def save(self, *args, **kwargs):
    ...
    bambu_webhooks.send('webhook_name_', self.author,
        {
            'id': self.pk,
            'name': self.name
        },
        md5('testproject.myapp.mymodel:%d' % self.pk).hexdigest()
    )

Better with Bootstrap

This package, among most in the Bambu toolset is designed to work with Bambu Bootstrap, a collection of flexible templates designed for web apps based on the Twitter Bootstrap framework. It’s not a package requirement, but it’ll mean the template structure and the context variables exposed by the view makes a little more sense.

Todo

  • Allow webhooks to be categorised and/or filtered
  • Prepare for internationalisation
  • Write tests

Questions or suggestions?

Find me on Twitter (@iamsteadman) or visit my blog.

Indices and tables