This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Module that provides methods for accessing Crossbar.io HTTP Bridge Services

Fork of the original package by Eric Chapman at The HQ, now supporting Python 2.6, 2.7 and 3+ versions.

Installation

Install Crossbar HTTP 3 with pip:

pip install crossbarhttp3

Basic usage

Call

To call a Crossbar HTTP bridge, do the following:

client = Client('http://127.0.0.1/call')
result = client.call('com.example.add', 2, 3, offset=10)

This will call the following add_something method of an ApplicationSession object:

from autobahn.twisted.wamp import ApplicationSession
from twisted.internet.defer import inlineCallbacks


class MyComponent(ApplicationSession):
    @inlineCallbacks
    def onJoin(self, details):

        def add_something(x, y, offset=0):
            print('Add was called')
            return x + y + offset

        yield self.register(add_something, 'com.example.add')

Publish

To publish to a Crossbar HTTP bridge, do the following:

client = Client('http://127.0.0.1/publish')
result = client.publish('com.example.event', event='new event')

The receiving subscription implemented in an ApplicationSession class would look like this:

from autobahn.twisted.wamp import ApplicationSession
from twisted.internet.defer import inlineCallbacks


class MyComponent(ApplicationSession):
    @inlineCallbacks
    def onJoin(self, details):

        def subscribe_something(event=None, **kwargs):
            print('Publish was called with event %s' % event)

        yield self.subscribe(subscribe_something, 'com.example.event')

Key/Secret

For bridge services that have a key and secret defined, simply include the key and secret in the instantiation of the client.

client = Client('http://127.0.0.1/publish', key='key', secret='secret')

Additional options

There are two more options available in the client instantiation:

  • timeout: Lets you specify a number of seconds from which an idle request to the Crossbar.io node will be dismissed (timed out). Defaults to None, meaning that the global default timeout setting will be used.
  • silently: If set to True, any failed request to the Crossbar.io node will be returned by the client as None, without raising any exception. Defaults to False, meaning that all failures will raise their correspondent exceptions.

Exceptions

The library will throw the following exceptions. Note that all exceptions subclass from ClientBaseException so you can just catch that if you don’t want the granularity.

  • ClientBadUrl - The specified URL is not a HTTP bridge service
  • ClientBadHost - The specified host name is rejecting the connection
  • ClientMissingParams - The call was missing parameters
  • ClientSignatureError - The signature did not match
  • ClientNoCalleeRegistered - Callee was not registered on the router for the specified procedure
  • ClientCallRuntimeError - Procedure triggered an exception

Contributing

All bug-fixes or improvements to the library are welcome.

To contribute, fork the repo and submit a pull request to the develop branch. Please, try to follow this basic coding rules:

  • Always include some unit tests for the new code you write or the bugs you fix. Or, update the existent unit tests if necessary.
  • Stick to PEP-8 styling.

Testing

In order to test Crossbar HTTP 3 properly you must have a Crossbar.io node in HTTP Bridge mode running in localhost port 8001. You can do that by yourself if you need it, but otherwise there is a Docker image already prepared, so you don’t have to bother with this.

To use that image and raise a Docker container with everything working, make sure you have Docker installed and execute this command:

docker run -t -p 8001:8001 --name crossbar-bridge joselpa/crossbar-http-bridge:0.2

Then you can run the unit tests in the regular way:

python setup.py test

License

Released under MIT License.

Release History

Release History

1.1

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
crossbarhttp3-1.1-py2.py3-none-any.whl (5.8 kB) Copy SHA256 Checksum SHA256 py2.py3 Wheel Sep 11, 2016
crossbarhttp3-1.1.tar.gz (5.9 kB) Copy SHA256 Checksum SHA256 Source Sep 11, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting