Package: crossbarhttprequests
Module that provides methods for accessing Crossbar.io HTTP Bridge
Services using python-requests and requests-futures for async supportFork of the original package byEric Chapman at The HQ, only
supporting Python 3+ versions using python-requests and requests-futures
module. Which means you can pass params like proxies, auth, certificate
verify etc. to the Client. Check python-requests for extra args you can
use.Revision Historyv0.1.4:Added requests-futures module to support async mode calls can now
return Futures instead of Response objv0.1.3:Switched to python-requests module to support more params passing
to the clientv0.1.2:Added “ClientCallRuntimeError” exception for general errorsv0.1.1:Added class defined Exceptions for specific eventsAdded key/secret handlingv0.1:Initial versionInstallationpip install crossbarhttprequestsUsageCallTo call a Crossbar HTTP bridge, do the followingclient = Client("https://127.0.0.1/call", verify=False) # https url with extra param verify going to requests.request
result = client.call("com.example.add", 2, 3, offset=10)
#Asnyc mode
client = Client("http://127.0.0.1/", do_async=True) # Run in async mode
future = client.call("com.example.add", 2, 3, offset=10)
#Do other work here
result = future.result() #Get result when readyThis will call the following methoddef onJoin(self, details):

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

    self.register(add_something, "com.example.add")PublishTo publish to a Crossbar HTTP bridge, do the followingclient = Client("http://127.0.0.1/", headers={'X-Custom-Headers': 'X-Value'}) # Extra params goes to requests.request
result = client.publish("com.example.event", event="new event")
#In async mode
client = Client("http://127.0.0.1/publish", do_async=True, max_workers=8, session=None, response_hook=None) # Extra params for requests-futures
result = client.publish("com.example.event", event="new event", response_hook=_method_to_handle_response).result()The receiving subscription would look likedef onJoin(self, details):

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

    self.subscribe(subscribe_something, "com.example.event")Key/SecretFor 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")ExceptionsThe 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 serviceClientBadHost - The specified host name is rejecting the connectionClientMissingParams - The call was missing parametersClientSignatureError - The signature did not matchClientNoCalleeRegistered - Callee was not registered on the router
for the specified procedureClientCallRuntimeError - Procedure triggered an exceptionContributingTo contribute, fork the repo and submit a pull request.TestingThe test can be run by using Docker Compose. Connect to a docker host
and type%> docker-compose build
%> docker-compose upThe Docker Compose file creates a generic router with an example service
connected to it and runs the tests.The service “crossbarhttp_test_1” will return a 0 value if the tests
were successful and non zero otherwise. To get the pass/fail results
from a command line, do the following#!/usr/bin/env bash

docker-compose build
docker-compose up

exit $(docker-compose ps -q | xargs docker inspect -f '{{ .Name }} exited with status {{ .State.ExitCode }}' | grep test_1 | cut -f5 -d ' ')This is a little hacky (and hopefully Docker will fix it) but it will do
the trick for now.LicenseMIT