# SOAP-specific code for SFA Client from httplib import HTTPSConnection from ZSI.client import Binding def xmlrpc_like_callable (soap_callable, *x): soap_result = soap_callable(*x) xmlrpc_result = soap_result['Result'] return xmlrpc_result class SFACallable: def __init__(self, soap_callable): self.soap_callable = soap_callable def __call__(self, *args): outer_result = self.soap_callable(*args) return outer_result['Result'] class SFASoapBinding(Binding): def __getattr__(self, attr): soap_callable = Binding.__getattr__(self, attr) return SFACallable(soap_callable) def get_server(url, key_file, cert_file): auth = { 'transport' : HTTPSConnection, 'transdict' : {'cert_file' : cert_file, 'key_file' : key_file }, } return SFASoapBinding(url=url, **auth)