Exemplo n.º 1
0
 def __init__(self, service, methodname):
     self.service = service
     self.response = None
     self.responsedata = None
     if hasattr(service, 'wsdlDocumentProxy'):
         self.soapCallInfo = service.wsdlDocumentProxy.methods[methodname]
     else:
         self.soapCallInfo = SOAPCallInfo(methodname)
     super(SOAPMethod, self).__init__(service, methodname)
Exemplo n.º 2
0
 def __init__(self, service, methodname):
     self.service = service
     self.response = None
     self.responsedata = None
     if hasattr(service, 'wsdlDocumentProxy'):
         self.soapCallInfo = service.wsdlDocumentProxy.methods[methodname]
     else:
         self.soapCallInfo = SOAPCallInfo(methodname)
     super(SOAPMethod, self).__init__(service, methodname)
Exemplo n.º 3
0
class SOAPMethod(object):
    def __init__(self, service, methodname):
        self.service = service
        self.response = None
        self.responsedata = None
        if hasattr(service, 'wsdlDocumentProxy'):
            self.soapCallInfo = service.wsdlDocumentProxy.methods[methodname]
        else:
            self.soapCallInfo = SOAPCallInfo(methodname)
        super(SOAPMethod, self).__init__(service, methodname)
    def getSOAPProxy(self):
        return self.service.soapServiceProxy
    soapProxy = property(getSOAPProxy)
    def getNamespace(self):
        return self.soapCallInfo.namespace
    def setNamespace(self, namespace):
        self.soapCallInfo.namespace = namespace
    namespace = property(getNamespace, setNamespace)
    def getLocation(self):
        return self.soapCallInfo.location
    def setLocation(self, location):
        self.soapCallInfo.location = location
    location = property(getLocation, setLocation)
    def getSOAPAction(self):
        return self.soapCallInfo.soapAction
    def setSOAPAction(self, location):
        self.soapCallInfo.soapAction = soapAction
    soapAction = property(getSOAPAction, setSOAPAction)
    def getArgumentNames(self):
        return tuple([param.name for param in self.soapCallInfo.inparams])
    def getArgumentTypes(self):
        return tuple([param.type for param in self.soapCallInfo.inparams])
    def getArguments(self):
        return list(self.soapCallInfo.inparams)
    def getArgument(self, index):
        return self.soapCallInfo.inparams[index]
    def appendArgument(self, name, type, namespace=None, *args):
        return self.soapCallInfo.addInParameter(name, type, namespace, *args)
    def removeArgument(self, argument):
        self.soapCallInfo.inparams.remove(argument)
    def clearArguments(self):
        self.soapCallInfo.inparams = []
    def invoke(self, *args, **kwargs):
        # Turn values passed in into named parameter args.
        arginfos = self.getArguments()
        argparams = tuple(map(asNamedParameter, args, arginfos[0:len(args)]))
        argvalues = args[len(argparams):]
        # Configure soap proxy with location and action of call
        curproxy = self.soapProxy.proxy
        curaction = self.soapProxy.soapaction
        curnamespace = self.soapProxy.namespace
        curtransport = self.soapProxy.transport
        transwrapper = TransportWrapper(curtransport)
        try:
            if self.soapCallInfo.location:
                self.soapProxy.proxy = SOAPAddress(self.soapCallInfo.location)
            if self.soapCallInfo.soapAction:
                self.soapProxy.soapaction = self.soapCallInfo.soapAction
            if self.soapCallInfo.namespace:
                self.soapProxy.namespace = self.soapCallInfo.namespace
            self.soapProxy.transport = transwrapper
            #self.soapProxy.config.returnAllAttrs = 1
            # Grab soap proxy's dynamically genertated callable
            methodname = self.soapCallInfo.methodName
            proxycallable = self.soapProxy.__getattr__(methodname)
            result = proxycallable(*(argparams + argvalues), **kwargs)
        finally:
            self.soapProxy.proxy = curproxy
            self.soapProxy.soapaction = curaction
            self.soapProxy.namespace = curnamespace
            self.soapProxy.transport = curtransport
        self.response = result
        self.responsedata = transwrapper.responsedata
    def getResponse(self):
        return self.response
    def getResponseData(self):
        return self.responsedata
    def getResponsePrimitive(self):
        return Types.simplify(self.getResponse())
    def __repr__(self):
        reprformat = '<bound %s.%s method %s of %s>'
        classname = type(self).__name__
        modulename = type(self).__module__
        methodname = self.soapCallInfo.methodName
        servicerepr = object.__repr__(self.service)
        return reprformat % (modulename, classname, methodname, servicerepr)
    def __str__(self):
        strformat = '<bound method %s(%s) of %s>'
        methodname = self.soapCallInfo.methodName
        argnames = self.getArgumentNames()
        servicestr = object.__str__(self.service)
        return strformat % (methodname, ', '.join(argnames), servicestr)
    def __call__(self, *args, **kwargs):
        self.invoke(*args, **kwargs)
        return self.getResponse()
Exemplo n.º 4
0
class SOAPMethod(object):
    def __init__(self, service, methodname):
        self.service = service
        self.response = None
        self.responsedata = None
        if hasattr(service, 'wsdlDocumentProxy'):
            self.soapCallInfo = service.wsdlDocumentProxy.methods[methodname]
        else:
            self.soapCallInfo = SOAPCallInfo(methodname)
        super(SOAPMethod, self).__init__(service, methodname)

    def getSOAPProxy(self):
        return self.service.soapServiceProxy

    soapProxy = property(getSOAPProxy)

    def getNamespace(self):
        return self.soapCallInfo.namespace

    def setNamespace(self, namespace):
        self.soapCallInfo.namespace = namespace

    namespace = property(getNamespace, setNamespace)

    def getLocation(self):
        return self.soapCallInfo.location

    def setLocation(self, location):
        self.soapCallInfo.location = location

    location = property(getLocation, setLocation)

    def getSOAPAction(self):
        return self.soapCallInfo.soapAction

    def setSOAPAction(self, location):
        self.soapCallInfo.soapAction = soapAction

    soapAction = property(getSOAPAction, setSOAPAction)

    def getArgumentNames(self):
        return tuple([param.name for param in self.soapCallInfo.inparams])

    def getArgumentTypes(self):
        return tuple([param.type for param in self.soapCallInfo.inparams])

    def getArguments(self):
        return list(self.soapCallInfo.inparams)

    def getArgument(self, index):
        return self.soapCallInfo.inparams[index]

    def appendArgument(self, name, type, namespace=None, *args):
        return self.soapCallInfo.addInParameter(name, type, namespace, *args)

    def removeArgument(self, argument):
        self.soapCallInfo.inparams.remove(argument)

    def clearArguments(self):
        self.soapCallInfo.inparams = []

    def invoke(self, *args, **kwargs):
        # Turn values passed in into named parameter args.
        arginfos = self.getArguments()
        argparams = tuple(map(asNamedParameter, args, arginfos[0:len(args)]))
        argvalues = args[len(argparams):]
        # Configure soap proxy with location and action of call
        curproxy = self.soapProxy.proxy
        curaction = self.soapProxy.soapaction
        curnamespace = self.soapProxy.namespace
        curtransport = self.soapProxy.transport
        transwrapper = TransportWrapper(curtransport)
        try:
            if self.soapCallInfo.location:
                self.soapProxy.proxy = SOAPAddress(self.soapCallInfo.location)
            if self.soapCallInfo.soapAction:
                self.soapProxy.soapaction = self.soapCallInfo.soapAction
            if self.soapCallInfo.namespace:
                self.soapProxy.namespace = self.soapCallInfo.namespace
            self.soapProxy.transport = transwrapper
            #self.soapProxy.config.returnAllAttrs = 1
            # Grab soap proxy's dynamically genertated callable
            methodname = self.soapCallInfo.methodName
            proxycallable = self.soapProxy.__getattr__(methodname)
            result = proxycallable(*(argparams + argvalues), **kwargs)
        finally:
            self.soapProxy.proxy = curproxy
            self.soapProxy.soapaction = curaction
            self.soapProxy.namespace = curnamespace
            self.soapProxy.transport = curtransport
        self.response = result
        self.responsedata = transwrapper.responsedata

    def getResponse(self):
        return self.response

    def getResponseData(self):
        return self.responsedata

    def getResponsePrimitive(self):
        return Types.simplify(self.getResponse())

    def __repr__(self):
        reprformat = '<bound %s.%s method %s of %s>'
        classname = type(self).__name__
        modulename = type(self).__module__
        methodname = self.soapCallInfo.methodName
        servicerepr = object.__repr__(self.service)
        return reprformat % (modulename, classname, methodname, servicerepr)

    def __str__(self):
        strformat = '<bound method %s(%s) of %s>'
        methodname = self.soapCallInfo.methodName
        argnames = self.getArgumentNames()
        servicestr = object.__str__(self.service)
        return strformat % (methodname, ', '.join(argnames), servicestr)

    def __call__(self, *args, **kwargs):
        self.invoke(*args, **kwargs)
        return self.getResponse()