From jortel at redhat.com Mon Jan 5 14:56:04 2009 From: jortel at redhat.com (Jeff Ortel) Date: Mon, 05 Jan 2009 09:56:04 -0500 Subject: [Fedora-suds-list] SUDS and Changing the Service Port Address In-Reply-To: <2F51C1B5-28E7-4A1F-9B51-9278C2B96CFA@gmail.com> References: <2F51C1B5-28E7-4A1F-9B51-9278C2B96CFA@gmail.com> Message-ID: <49621F84.7020001@redhat.com> Yes. You can override the
defined in the wsdl using the "location" option as follows: > > client = Client(url) > client.set_options(location='') > ... Regards, Jeff Itsa Me, Momo! wrote: > Hi, > > I'm currently working with VTiger and I've noticed that the address in > the service port definition is wrong. I am working with them to see if > we can get that fixed, but in the meantime, is there a way that I can > alter the address of a service port programmatically? > > Essentially I need to change the address that > client.service.vtigersoapPort points to when it makes a call. > > Thanks! > > _______________________________________________ > fedora-suds-list mailing list > fedora-suds-list at redhat.com > https://www.redhat.com/mailman/listinfo/fedora-suds-list From jortel at redhat.com Mon Jan 5 20:45:39 2009 From: jortel at redhat.com (Jeff Ortel) Date: Mon, 05 Jan 2009 15:45:39 -0500 Subject: [Fedora-suds-list] Cookie Question In-Reply-To: <994c7b7d0901050152i714d0942pfb7a8ab620f5e250@mail.gmail.com> References: <994c7b7d0812180544k7c6a325ajaf30df3e7ffe8e1d@mail.gmail.com> <494A5826.7060208@redhat.com> <994c7b7d0812180654q38055df8o450460d3d5db83d6@mail.gmail.com> <494A745E.3040606@redhat.com> <994c7b7d0812190158h64a82198p10a2093e3f8d319b@mail.gmail.com> <994c7b7d0901050152i714d0942pfb7a8ab620f5e250@mail.gmail.com> Message-ID: <49627173.10503@redhat.com> Marc, Hmm.... I'm not sure what to tell you. I'll forward to the list and hope that someone that has experience using cookielib can help. Anyone? Jeff Marc Belmont wrote: > Hi, I am still trying to figure out how the cookies are working, here is > the code I use: > > from suds.client import Client, SoapClient > url = "http://demo.gostai.com/WSDL001HHDIZMAKS787F2AHGHFD2DFF/rcweb.wsdl" > client = Client(url) > client.service.userAuthenticate("marcbelmont at gmail.com > ", "testpass") > print client.options.transport.cookiejar > > The cookie jar is empty. > > With the php code, I have cookies. > > $address = > "http://demo.gostai.com/WSDL001HHDIZMAKS787F2AHGHFD2DFF/rcweb.wsdl"; > $client = new SoapClient($address); > $client->userAuthenticate(array('login' => "marcbelmont at gmail.com > ", > 'password' => "testpass")); > print_r($client->_cookies); > > Happy new year! Marc > > On Fri, Dec 19, 2008 at 10:58 AM, Marc Belmont > wrote: > > Thanks for the code, I will test my stuff more and I will let you > know if I manage to make it work. > > Bye, Marc > > > On Thu, Dec 18, 2008 at 5:03 PM, Jeff Ortel > wrote: > > Marc, > > Glad to help. > > Cookies should be working but it hasn't been tested in several > releases. I don't have a server that uses cookies so it's hard > for me to regression test this. > > The cookiejar is adding cookies to the urllib2 request and > extracting cookies from the urllib2 response as follows: > > def send(self, request): > result = None > url = request.url > msg = str(request.message) > headers = request.headers > log.debug('sending to (%s)\nmessage:\n%s', url, msg) > try: > u2request = u2.Request(url, msg, headers) > self.__addcookies(u2request) > self.__setproxy(url, u2request) > fp = self.__open(u2request) > self.__getcookies(fp, u2request) > result = fp.read() > except u2.HTTPError, e: > if e.code in (202,204): > result = None > else: > raise TransportError(e.msg, e.code, e.fp) > return result > > def __addcookies(self, u2request): > self.cookiejar.add_cookie_header(u2request) > > def __getcookies(self, fp, u2request): > self.cookiejar.extract_cookies(fp, u2request) > > When you walk through this with the debugger, do you not see the > cookies you're expecting? > > What makes you think it's not working? > > Regards, > > Jeff > > Marc Belmont wrote: > > Hi, thanks for the quick update. The cookiejar is always > empty. Has this feature been tested ? > > Thanks, Marc > > On Thu, Dec 18, 2008 at 3:03 PM, Jeff Ortel > > >> wrote: > > Hey Marc, > > Thanks for your interest in suds. > > I'm assuming you're using 0.3.3 > > The best way to do this is to get the (cookielib) cookie > jar from > the transport. You should be able to do something like this: > > > > > client = Client(url) > > cj = client.options.transport.cookiejar > > > > Now that you have the cookie jar, you can do what you > want with the > cookies. > > Hope this helps, > > Jeff > > > Marc Belmont wrote: > > Hi, > > Is it possible to get the cookie returned by a soap > call. Example : > client = Client(url) > res = client.service.mymethod() > res.getcookies() # that's what I'm trying to do > > I also need to set the cookie before a soap call and > I don't > know how to do that. > > Have a nice day. Bye > > > > From plaes at plaes.org Sun Jan 11 14:25:47 2009 From: plaes at plaes.org (Priit Laes) Date: Sun, 11 Jan 2009 16:25:47 +0200 Subject: [Fedora-suds-list] Trouble with amazon SOAP services Message-ID: <1231683947.6022.17.camel@chi> Hi! I am playing around with amazon's SOAP interface with 0.3.3 and 0.3.4_beta, but ran into a backtrace problem. This is the test script: #!/usr/bin/python from suds.client import Client AWS_ACCESS_KEY='' # masked out (but, backtrace happens even with the right key) url = 'http://ecs.amazonaws.com/AWSECommerceService/2008-08-19/AWSECommerceService.wsdl' client = Client(url) req = client.factory.create('ItemSearchRequest') req.Keywords = 'Canon lens' res = client.service.ItemSearch('US', AWS_ACCESS_KEY, '', '', 'False', req) print res ...which runs into following problem/backtrace: plaes at chi ~/code/soaptest $ ./test.py No handlers could be found for logger "suds.resolver" Traceback (most recent call last): File "./test.py", line 14, in res = client.service.ItemSearch('US', AWS_ACCESS_KEY, '', '', 'False', req) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 229, in __call__ return target.call(*args, **kwargs) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 356, in call return method(*args, **kwargs) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 229, in __call__ return target.call(*args, **kwargs) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 399, in call return client.invoke(args, kwargs) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 457, in invoke result = self.send(msg) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 482, in send result = self.succeeded(binding, reply) File "//usr/lib64/python2.5/site-packages/suds/client.py", line 514, in succeeded r, p = binding.get_reply(self.method, reply) File "//usr/lib64/python2.5/site-packages/suds/bindings/binding.py", line 129, in get_reply result = self.reply_composite(rtypes, nodes) File "//usr/lib64/python2.5/site-packages/suds/bindings/binding.py", line 179, in reply_composite sobject = unmarshaller.process(node, resolved) File "//usr/lib64/python2.5/site-packages/suds/bindings/unmarshaller.py", line 302, in process return UMBase.process(self, content) File "//usr/lib64/python2.5/site-packages/suds/bindings/unmarshaller.py", line 87, in process data, result = self.append(content) File "//usr/lib64/python2.5/site-packages/suds/bindings/unmarshaller.py", line 103, in append self.append_children(content) File "//usr/lib64/python2.5/site-packages/suds/bindings/unmarshaller.py", line 180, in append_children cdata, cval = self.append(cont) File "//usr/lib64/python2.5/site-packages/suds/bindings/unmarshaller.py", line 101, in append self.start(content) File "//usr/lib64/python2.5/site-packages/suds/bindings/unmarshaller.py", line 323, in start raise TypeNotFound(content.node.qname()) suds.TypeNotFound: Type not found: 'HTTPHeaders' Cheers, Priit :) From russellneufeld at gmail.com Mon Jan 12 21:00:29 2009 From: russellneufeld at gmail.com (Russell Neufeld) Date: Mon, 12 Jan 2009 16:00:29 -0500 Subject: [Fedora-suds-list] Trouble with amazon SOAP services Message-ID: <496BAF6D.3050604@gmail.com> Hi Priit, I ran into what sounds like a similar problem with a wsdl from Commission Junction recently. The problem was suds being very strict about the wsdl definition, and there technically being a bug in their wsdl. I'm no expert, but try altering the amazon wsdl by adding this: to line 5, which is currently blank. Russ -------------- next part -------------- An HTML attachment was scrubbed... URL: From plaes at plaes.org Tue Jan 13 12:59:14 2009 From: plaes at plaes.org (Priit Laes) Date: Tue, 13 Jan 2009 14:59:14 +0200 Subject: [Fedora-suds-list] Trouble with amazon SOAP services In-Reply-To: <496BAF6D.3050604@gmail.com> References: <496BAF6D.3050604@gmail.com> Message-ID: <1231851554.16986.3.camel@chi> ?hel kenal p?eval, E, 2009-01-12 kell 16:00, kirjutas Russell Neufeld: > Hi Priit, > > I ran into what sounds like a similar problem with a wsdl from > Commission Junction recently. The problem was suds being very strict > about the wsdl definition, and there technically being a bug in their > wsdl. I'm no expert, but try altering the amazon wsdl by adding this: > > namespace="http://webservices.amazon.com/AWSECommerceService/2008-08-19"/> > > to line 5, which is currently blank. Thanks for the hint, but it didn't work :( I have also tried using Import.bind(...) with various arguments, but still no idea... Unfortunately I have not yet figured what to look for in debug logs, so I could give more information what fails and what doesn't :) -- Priit Laes http://plaes.org From JGiangrande at clarku.edu Tue Jan 13 20:51:10 2009 From: JGiangrande at clarku.edu (Jason Giangrande) Date: Tue, 13 Jan 2009 15:51:10 -0500 Subject: [Fedora-suds-list] SOAP Method Problem Message-ID: <73848327A96D9344B45109682FE313631C0F12F7AE@john.ad.clarku.edu> Is there anyway to work around a SOAP method that has the same name as a Python reserved keyword (in this case "del")? I'm calling it like this "client.service.del(options)" and this gets an invalid syntax error. Changing the WSDL is an option, but one I'd rather avoid if there's a better way. Any suggestions? Thanks. -- Jason Giangrande System Administrator Clark University From rjalves at igc.gulbenkian.pt Tue Jan 13 22:15:21 2009 From: rjalves at igc.gulbenkian.pt (Renato Alves) Date: Tue, 13 Jan 2009 22:15:21 +0000 Subject: [Fedora-suds-list] SOAP Method Problem In-Reply-To: <73848327A96D9344B45109682FE313631C0F12F7AE@john.ad.clarku.edu> References: <73848327A96D9344B45109682FE313631C0F12F7AE@john.ad.clarku.edu> Message-ID: <496D1279.1030509@igc.gulbenkian.pt> >From Jason Giangrande on 01/13/2009 08:51 PM: > Is there anyway to work around a SOAP method that has the same name as a Python reserved keyword (in this case "del")? I'm calling it like this "client.service.del(options)" and this gets an invalid syntax error. Changing the WSDL is an option, but one I'd rather avoid if there's a better way. Any suggestions? > > Thanks. > > -- > Jason Giangrande > System Administrator > Clark University > > > _______________________________________________ > fedora-suds-list mailing list > fedora-suds-list at redhat.com > https://www.redhat.com/mailman/listinfo/fedora-suds-list Jeff is probably going to beat me but I couldn't find any decent way to call it. As you stated calling "del" gives a syntax error. Probably this will have to be renamed to something like _del or del_ to prevent clashing. As an ugly fix try using: client.service.__wrapped__.resolve('del')() Hope this helps. Cheers -- Renato Alves From jortel at redhat.com Tue Jan 13 23:00:14 2009 From: jortel at redhat.com (Jeff Ortel) Date: Tue, 13 Jan 2009 18:00:14 -0500 Subject: [Fedora-suds-list] SOAP Method Problem In-Reply-To: <73848327A96D9344B45109682FE313631C0F12F7AE@john.ad.clarku.edu> References: <73848327A96D9344B45109682FE313631C0F12F7AE@john.ad.clarku.edu> Message-ID: <496D1CFE.80908@redhat.com> Hey Jason, I would suggest: > > client = Client(url) > delete = getattr(client.service, 'del') > reply = delete(options) > Regards, Jeff Jason Giangrande wrote: > Is there anyway to work around a SOAP method that has the same name as a Python reserved keyword (in this case "del")? I'm calling it like this "client.service.del(options)" and this gets an invalid syntax error. Changing the WSDL is an option, but one I'd rather avoid if there's a better way. Any suggestions? > > Thanks. > > -- > Jason Giangrande > System Administrator > Clark University > > > _______________________________________________ > fedora-suds-list mailing list > fedora-suds-list at redhat.com > https://www.redhat.com/mailman/listinfo/fedora-suds-list From JGiangrande at clarku.edu Wed Jan 14 16:03:42 2009 From: JGiangrande at clarku.edu (Jason Giangrande) Date: Wed, 14 Jan 2009 11:03:42 -0500 Subject: [Fedora-suds-list] SOAP Method Problem In-Reply-To: <496D1CFE.80908@redhat.com> References: <73848327A96D9344B45109682FE313631C0F12F7AE@john.ad.clarku.edu> <496D1CFE.80908@redhat.com> Message-ID: <73848327A96D9344B45109682FE313631C0F12F8EC@john.ad.clarku.edu> Thanks Jeff. That worked perfectly. Jason > -----Original Message----- > From: fedora-suds-list-bounces at redhat.com [mailto:fedora-suds-list- > bounces at redhat.com] On Behalf Of Jeff Ortel > Sent: Tuesday, January 13, 2009 6:00 PM > To: Jason Giangrande > Cc: fedora-suds-list at redhat.com > Subject: Re: [Fedora-suds-list] SOAP Method Problem > > Hey Jason, > > I would suggest: > > > > > client = Client(url) > > delete = getattr(client.service, 'del') > > reply = delete(options) > > > > Regards, > > Jeff > > Jason Giangrande wrote: > > Is there anyway to work around a SOAP method that has the same name as a > Python reserved keyword (in this case "del")? I'm calling it like this > "client.service.del(options)" and this gets an invalid syntax error. > Changing the WSDL is an option, but one I'd rather avoid if there's a > better way. Any suggestions? > > > > Thanks. > > > > -- > > Jason Giangrande > > System Administrator > > Clark University > > > > > > _______________________________________________ > > fedora-suds-list mailing list > > fedora-suds-list at redhat.com > > https://www.redhat.com/mailman/listinfo/fedora-suds-list > > _______________________________________________ > fedora-suds-list mailing list > fedora-suds-list at redhat.com > https://www.redhat.com/mailman/listinfo/fedora-suds-list From jterry at mobitv.com Thu Jan 15 20:00:51 2009 From: jterry at mobitv.com (James Terry) Date: Thu, 15 Jan 2009 12:00:51 -0800 Subject: [Fedora-suds-list] newbie: what am i missing? Message-ID: <2E66667565DEA14BBE00BC6678E02292028783A8@exchange01.mobitv.corp> The Suds client object doesn't seem to define types for use as args to the methods: Any help appreciated. j ############ print client ############## Suds ( https://fedorahosted.org/suds/ ) version: 0.3.4 (beta) build: R427-20090113 Service ( cspub ) tns="http://api.geotrust.com/webtrust/cspub" Prefixes (1) ns0 = "http://api.geotrust.com/webtrust/cspub" Ports (1): (cspubSoap) Methods (5): accountInfoReq(accountInfoRequest accountInfoRequest, ) applicationRetrievalReq(applicationRetrievalRequest applicationRetrievalRequest, ) signReq(signRequest signRequest, ) statusReq(statusRequest statusRequest, ) testConnectReq(testConnectRequest testConnectRequest, ) Types (12): accountInfo applicationDetail authToken error errors eventBalance infoQueryOptions orderQueryOptions requestHeader responseHeader signingService signingServices ############ WSDL (https://api.geotrust.com/webtrust/cspub.jws?WSDL') ############## (Definitions){ id = "Definitions:0xdb90d0" options = url = "https://api.geotrust.com/webtrust/cspub.jws?WSDL" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", types[] = (Types){ definitions = (Definitions)... }, schema = "" imports[] = messages = { (signReqSoapOut, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "signReqSoapOut" qname = "(u'signReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (applicationRetrievalReqSoapOut, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "applicationRetrievalReqSoapOut" qname = "(u'applicationRetrievalReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (statusReqSoapIn, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "statusReqSoapIn" qname = "(u'statusReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (testConnectReqSoapIn, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "testConnectReqSoapIn" qname = "(u'testConnectReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (testConnectReqSoapOut, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "testConnectReqSoapOut" qname = "(u'testConnectReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (accountInfoReqSoapIn, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "accountInfoReqSoapIn" qname = "(u'accountInfoReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (statusReqSoapOut, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "statusReqSoapOut" qname = "(u'statusReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (accountInfoReqSoapOut, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "accountInfoReqSoapOut" qname = "(u'accountInfoReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (signReqSoapIn, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "signReqSoapIn" qname = "(u'signReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } (applicationRetrievalReqSoapIn, http://api.geotrust.com/webtrust/cspub, ) = (Message){ name = "applicationRetrievalReqSoapIn" qname = "(u'applicationRetrievalReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } port_types = { (cspubSoap, http://api.geotrust.com/webtrust/cspub, ) = (PortType){ name = "cspubSoap" qname = "(u'cspubSoap', u'http://api.geotrust.com/webtrust/cspub')" operations = { testConnectReq = (Operation){ name = "testConnectReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "testConnectReqSoapIn" qname = "(u'testConnectReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "testConnectReqSoapOut" qname = "(u'testConnectReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } applicationRetrievalReq = (Operation){ name = "applicationRetrievalReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "applicationRetrievalReqSoapIn" qname = "(u'applicationRetrievalReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "applicationRetrievalReqSoapOut" qname = "(u'applicationRetrievalReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } signReq = (Operation){ name = "signReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "signReqSoapIn" qname = "(u'signReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "signReqSoapOut" qname = "(u'signReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } accountInfoReq = (Operation){ name = "accountInfoReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "accountInfoReqSoapIn" qname = "(u'accountInfoReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "accountInfoReqSoapOut" qname = "(u'accountInfoReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } statusReq = (Operation){ name = "statusReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "statusReqSoapIn" qname = "(u'statusReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "statusReqSoapOut" qname = "(u'statusReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } } } } bindings = { (cspubSoap, http://api.geotrust.com/webtrust/cspub, ) = (Binding){ name = "cspubSoap" qname = "(u'cspubSoap', u'http://api.geotrust.com/webtrust/cspub')" operations = { testConnectReq = (Operation){ name = "testConnectReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/testConnectReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } applicationRetrievalReq = (Operation){ name = "applicationRetrievalReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/applicationRetrievalReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } signReq = (Operation){ name = "signReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/signReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } accountInfoReq = (Operation){ name = "accountInfoReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/accountInfoReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } statusReq = (Operation){ name = "statusReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/statusReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } } type = (PortType){ name = "cspubSoap" qname = "(u'cspubSoap', u'http://api.geotrust.com/webtrust/cspub')" operations = { testConnectReq = (Operation){ name = "testConnectReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "testConnectReqSoapIn" qname = "(u'testConnectReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "testConnectReqSoapOut" qname = "(u'testConnectReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } applicationRetrievalReq = (Operation){ name = "applicationRetrievalReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "applicationRetrievalReqSoapIn" qname = "(u'applicationRetrievalReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "applicationRetrievalReqSoapOut" qname = "(u'applicationRetrievalReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } signReq = (Operation){ name = "signReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "signReqSoapIn" qname = "(u'signReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "signReqSoapOut" qname = "(u'signReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } accountInfoReq = (Operation){ name = "accountInfoReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "accountInfoReqSoapIn" qname = "(u'accountInfoReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "accountInfoReqSoapOut" qname = "(u'accountInfoReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } statusReq = (Operation){ name = "statusReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "statusReqSoapIn" qname = "(u'statusReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "statusReqSoapOut" qname = "(u'statusReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } } } soap = (soap){ style = "document" } } } service = (Service){ name = "cspub" qname = "(u'cspub', u'http://api.geotrust.com/webtrust/cspub')" ports[] = (Port){ name = "cspubSoap" qname = "(u'cspubSoap', u'http://api.geotrust.com/webtrust/cspub')" _Port__service = (Service)... binding = (Binding){ name = "cspubSoap" qname = "(u'cspubSoap', u'http://api.geotrust.com/webtrust/cspub')" operations = { testConnectReq = (Operation){ name = "testConnectReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/testConnectReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } applicationRetrievalReq = (Operation){ name = "applicationRetrievalReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/applicationRetrievalReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } signReq = (Operation){ name = "signReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/signReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } accountInfoReq = (Operation){ name = "accountInfoReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/accountInfoReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } statusReq = (Operation){ name = "statusReq" soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/statusReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } } } type = (PortType){ name = "cspubSoap" qname = "(u'cspubSoap', u'http://api.geotrust.com/webtrust/cspub')" operations = { testConnectReq = (Operation){ name = "testConnectReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "testConnectReqSoapIn" qname = "(u'testConnectReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "testConnectReqSoapOut" qname = "(u'testConnectReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } applicationRetrievalReq = (Operation){ name = "applicationRetrievalReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "applicationRetrievalReqSoapIn" qname = "(u'applicationRetrievalReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "applicationRetrievalReqSoapOut" qname = "(u'applicationRetrievalReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } signReq = (Operation){ name = "signReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "signReqSoapIn" qname = "(u'signReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "signReqSoapOut" qname = "(u'signReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } accountInfoReq = (Operation){ name = "accountInfoReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "accountInfoReqSoapIn" qname = "(u'accountInfoReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "accountInfoReqSoapOut" qname = "(u'accountInfoReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } statusReq = (Operation){ name = "statusReq" tns[] = "s0", "http://api.geotrust.com/webtrust/cspub", input = (Message){ name = "statusReqSoapIn" qname = "(u'statusReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "statusReqSoapOut" qname = "(u'statusReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } } } soap = (soap){ style = "document" } } location = "https://api.geotrust.com:443/webtrust/cspub.jws" }, methods = { signReq = (Method){ name = "signReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/signReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "signReqSoapIn" qname = "(u'signReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "signReqSoapOut" qname = "(u'signReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:signReq" } applicationRetrievalReq = (Method){ name = "applicationRetrievalReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/applicationRetrievalReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "applicationRetrievalReqSoapIn" qname = "(u'applicationRetrievalReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "applicationRetrievalReqSoapOut" qname = "(u'applicationRetrievalReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:applicationRetrievalReq" } cspubSoap:applicationRetrievalReq = (Method){ name = "applicationRetrievalReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/applicationRetrievalReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "applicationRetrievalReqSoapIn" qname = "(u'applicationRetrievalReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "applicationRetrievalReqSoapOut" qname = "(u'applicationRetrievalReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'applicationRetrievalReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:applicationRetrievalReq" } statusReq = (Method){ name = "statusReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/statusReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "statusReqSoapIn" qname = "(u'statusReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "statusReqSoapOut" qname = "(u'statusReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:statusReq" } cspubSoap:statusReq = (Method){ name = "statusReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/statusReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "statusReqSoapIn" qname = "(u'statusReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "statusReqSoapOut" qname = "(u'statusReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'statusReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:statusReq" } cspubSoap:signReq = (Method){ name = "signReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/signReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "signReqSoapIn" qname = "(u'signReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "signReqSoapOut" qname = "(u'signReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'signReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:signReq" } accountInfoReq = (Method){ name = "accountInfoReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/accountInfoReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "accountInfoReqSoapIn" qname = "(u'accountInfoReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "accountInfoReqSoapOut" qname = "(u'accountInfoReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:accountInfoReq" } cspubSoap:accountInfoReq = (Method){ name = "accountInfoReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/accountInfoReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "accountInfoReqSoapIn" qname = "(u'accountInfoReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "accountInfoReqSoapOut" qname = "(u'accountInfoReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'accountInfoReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:accountInfoReq" } testConnectReq = (Method){ name = "testConnectReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/testConnectReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "testConnectReqSoapIn" qname = "(u'testConnectReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "testConnectReqSoapOut" qname = "(u'testConnectReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:testConnectReq" } cspubSoap:testConnectReq = (Method){ name = "testConnectReq" location = "https://api.geotrust.com:443/webtrust/cspub.jws" binding = (binding){ input = output = } soap = (soap){ action = ""http://api.geotrust.com/webtrust/cspub/testConnectReq" " style = "document" input = (Input){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } output = (Output){ body = (Body){ use = "literal" namespace[] = "s0", "http://api.geotrust.com/webtrust/cspub", } header = None } } message = (message){ input = (Message){ name = "testConnectReqSoapIn" qname = "(u'testConnectReqSoapIn', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReq', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } output = (Message){ name = "testConnectReqSoapOut" qname = "(u'testConnectReqSoapOut', u'http://api.geotrust.com/webtrust/cspub')" parts[] = (Part){ root = name = "parameters" qname[] = "parameters", "http://api.geotrust.com/webtrust/cspub", element = "(u'testConnectReqResponse', u'http://api.geotrust.com/webtrust/cspub')" type = "None" }, } } qname = "cspubSoap:testConnectReq" } } } } -------------- next part -------------- An HTML attachment was scrubbed... URL: From jortel at redhat.com Mon Jan 19 23:48:20 2009 From: jortel at redhat.com (Jeff Ortel) Date: Mon, 19 Jan 2009 18:48:20 -0500 Subject: [Fedora-suds-list] Big performance problem in 0.3.4 (beta) R432-20090116 Message-ID: <49751144.1020505@redhat.com> All, I introduced a big performance problem in r432 that was (beta) released. I'm resolving this now but I would stay clear or be very cautions of this revision/release until I get getting to the bottom of this. Regards, Jeff From jortel at redhat.com Tue Jan 20 21:34:49 2009 From: jortel at redhat.com (Jeff Ortel) Date: Tue, 20 Jan 2009 16:34:49 -0500 Subject: [Fedora-suds-list] r432 performance issue fixed in r433 Message-ID: <49764379.5020903@redhat.com> All, The performance issue I found in r432 was really introduced in earlier revision of 0.3.4 and is now fixed in r433. Basically, schemas imported via and/or indirectly though wsdl imports were going through the "dereferencing" stage multiple times. Oddly enough, the "dereferencing" phase was revised in r432 to be much better, simpler and have better performance. The problem was caught when I was profiling these enhancements to see just how much better the performance was. Regards, Jeff From shunt at recordsreduction.com Thu Jan 22 16:37:35 2009 From: shunt at recordsreduction.com (Shane Hunt) Date: Thu, 22 Jan 2009 08:37:35 -0800 Subject: [Fedora-suds-list] =?utf-8?q?Do_you_dread_moving_the_=E2=80=9908?= =?utf-8?q?_files_to_make_room_for_=E2=80=9909=3F?= Message-ID: <200901221656.n0MGoZDm000846@mx2.redhat.com> Let us do it for you?.FREE of charge. Records Reduction, Inc. is offering FREE pickup for new customers in January & February, 2009. In addition, we will also pull the files from the filing cabinets and box them at NO CHARGE! That?s right, this year you will have to touch a file to get ready for ?09 files. It?s the perfect time for you to begin using our services. Scanning ? This is the best solutions for files that you must keep long term,or that require a lot of retrievals. Records Reduction, Inc. will scan them in and provide a legal copy on disk. You can save the files on your system and have a networked imaging solution with no additional software. Off site file storage ? This is the most economical solution for files that you don?t have to keep long term and for those that are rarely retrieved. Shredding ? If you have files that no longer have to be kept, let us pick them up and provide secure shredding. It?s also a great solution for any documents that contain Names, Social Security Numbers, or other identifying information. We can do large purges, or provide secure bins for ongoing shredding. Please call Shane Hunt @ 704-724-3313, or email shunt at recordsreduction.com for more information. www.recordsreduction.com Electronic filing (scanning/imaging) is the best long-term storage solution for any files that you must keep long term, or if you do a lot of retrievals from them. Examples include, but are not limited to: Accounts Payable Human Resources Medical Charts EOBs Sales Files Job Files Accounts Receivable Engineering Drawings School Records Educational Materials Legal Files Real Estate Files Bill of Ladings Workers Comp Files Which Service is Right for You? Document Scanning Document scanning is perfect for files that you must store for a long time ? typically five years or greater. Also, if you have to do many retrievals, scanning will pay for itself by increasing efficiencies in the office. With scanning, there are no ongoing costs. You pay once and you have a legal copy of your business documents forever. Some examples where scanning makes sense include Accounts Payables, Job Files, Corporate Financials, Medical Files, Legal Files, Insurance Documents, Human Resources, etc. www.recordsreduction.com Offsite Record Storage Offsite document Storage is best for files that you do not have to keep forever, and do very little retrievals. Records Reduction, Inc. provides records storage, retrieval, delivery and pick-up services for companies in the Carolinas. Records are stored at our secure service center where our team members retrieve boxes or individual files as requested by our clients. Records are normally delivered the next day & emergency delivery options are also available. We can always retrieve the file, scan it and email or fax it to you within minutes. Records Reduction, Inc. will become an extension to your existing file room or storage area by providing: - Secure, confidential document storage - Efficient retrieval of records - Next-day & emergency deliveries - The highest level of customer service in the industry We manage your records inventory through computer software tracking system. Once records are entered into our database and placed into storage, our customers can simply call or email and have their files physically or electronically delivered. www.recordsreduction.com Ongoing, Onsite Document Destruction Identity theft is the fastest rising crime in America. Companies can be found liable if they do not protect information that can be used in identity theft. You can use our secure bins for paper that contains information that might be used for identity theft. Many companies now use the bins for ALL of their discarded paper - sensitive or not - simply because they know it will be recycled. It's just another way to help protect our planet! Records Reduction, Inc. provides FREE locked, secure containers for thestorage of your confidential material while awaiting destruction. The containers are attractive and fit in well with all office environments. Our containers will segregate and secure sensitive materials in between our service visits. The containers are locked and can only be opened by authorized personnel, eliminating the chance of sensitive documents being made public or falling into the wrong hands. The locked containers will be picked up and placed in a secure document shredding system. In addition to paper document shredding services, Records Reduction provides secure destruction services for X-Rays, Computer Hard Drives, CDs, and Magnetic Media Tapes. www.recordsreduction.com Bulk Purge Shredding Services Companies file away storage boxes year after year. Often, they are kept long after their legal requirement. Shredding has become a necessary business service to not only comply with regulatory requirements but to protect your business, employees and customers from identity theft. Experts recommend that you shred most files as soon as it is legally permissible. Records Reduction, Inc. can provide onsite or offsite secure shredding services. www.recordsreduction.com eDocHealth ? Electronic Medical Records Solution Enhance Patient Care, reduce cost of operations and increase revenues through eDocHealth. eDocHealth is a proven medical document management solution that instantly improves medical office document access as well as practice workflow by electronically scanning and filing your documents and making them accessible to your entire staff regardless of their location. When you minimize paper-based activity and work within a digital environment, you trim overhead costs by reducing reliance on paper, streamline workflow with quick access to information, and protect patient records with strict user-control. The burden of administrative and clinical documents in a medical practice is considerable. Busy offices lead to inaccessible administrative documents and charts; whether misplaced, lost, or in use by another staff member. Physician practices continue to seek a solution to reduce or eliminate the increasing volumes of paper within their organizations. The optimal product would eliminate the issues of overcrowded office space and storage facilities as well as the problems associated with paper medical records such as lost or misplaced patient charts, patient EOBs, etc. Medical staff and providers demand a user friendly HIPAA compliant solution that enhances patient care, and reduces cost of operations while increasing revenue and generating a rapid return on investment (ROI). eDocHealth is a cost-effective way to meet those needs, by automation of administrative and clinical documents management. eDocHealth does not force you to change your office workflow, instead, it can adapt to it or be configured for ?best operational practices?. eDocHealth can work in conjunction with your Practice Management software and Electronic Medical Records software (EMR/EHR). In most cases document management solutions are better suited to manage medical records than traditional EMR/EHR. It is a non fact that document management solutions have near 98% implementation success while traditional EMR/HER solutions are more challenging endeavors. www.recordsreduction.com PO Box 3322, Matthews, NC 28106 http://app.streamsend.com/private/tF8d/2bm/qG6rTab/unsubscribe/2511712 -------------- next part -------------- An HTML attachment was scrubbed... URL: From gfranxman at gmail.com Tue Jan 27 23:55:05 2009 From: gfranxman at gmail.com (Glenn Franxman) Date: Tue, 27 Jan 2009 18:55:05 -0500 Subject: [Fedora-suds-list] WSSE Message-ID: <1d6a70330901271555t191164esc6ec840a9ce0dd5a@mail.gmail.com> I'm only just getting started with SOAP, so forgive the n00b questions. I'm trying to create calls that look something along the lines of: user password 3cf33e7-5ad1-3a9-093-3681f55eb0 9966673 ... To that end, I'm trying to add clauses for wsse:Security, license and accountID. That section of my code looks like: ... #construct WS-Security header for username/password WSSE_NS = "http://schemas.xmlsoap.org/ws/2002/07/secext" client.add_prefix( 'wsse', WSSE_NS ) #build account headers license = client.factory.create('license') license.set( License_Key ) accountid = client.factory.create('accountID') accountid.set( Master_Account_Id ) client.set_options(soapheaders=( license, accountid)) ... and it is resulting in: ... ... I'm still trying to feel my way through this, but I'm already wondering: What happened to the wsse namespace that I added? What happened to the license header that I added? Has anyone successfully used WSSE with suds? From gfranxman at gmail.com Tue Jan 27 23:56:42 2009 From: gfranxman at gmail.com (Glenn Franxman) Date: Tue, 27 Jan 2009 18:56:42 -0500 Subject: [Fedora-suds-list] Re: WSSE In-Reply-To: <1d6a70330901271555t191164esc6ec840a9ce0dd5a@mail.gmail.com> References: <1d6a70330901271555t191164esc6ec840a9ce0dd5a@mail.gmail.com> Message-ID: <1d6a70330901271556v4c8b5849o3554499ef883f876@mail.gmail.com> Oops, I meant what happened to the accountID header, not license. On Tue, Jan 27, 2009 at 6:55 PM, Glenn Franxman wrote: > I'm only just getting started with SOAP, so forgive the n00b questions. > > I'm trying to create calls that look something along the lines of: > > > xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns="http://amp.yahooapis.com/V1"> > > > > user > password > > > 3cf33e7-5ad1-3a9-093-3681f55eb0 > 9966673 > > > ... > > > > To that end, I'm trying to add clauses for wsse:Security, license and accountID. > That section of my code looks like: > > ... > #construct WS-Security header for username/password > WSSE_NS = "http://schemas.xmlsoap.org/ws/2002/07/secext" > client.add_prefix( 'wsse', WSSE_NS ) > > #build account headers > license = client.factory.create('license') > license.set( License_Key ) > accountid = client.factory.create('accountID') > accountid.set( Master_Account_Id ) > > client.set_options(soapheaders=( license, accountid)) > ... > > and it is resulting in: > > > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:tns="http://amp.yahooapis.com/V1" > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> > > ... > > > ... > > > > I'm still trying to feel my way through this, but I'm already wondering: > > What happened to the wsse namespace that I added? > What happened to the license header that I added? > > Has anyone successfully used WSSE with suds? > From steffen.oschatz at googlemail.com Wed Jan 28 12:23:50 2009 From: steffen.oschatz at googlemail.com (Steffen Oschatz) Date: Wed, 28 Jan 2009 13:23:50 +0100 Subject: [Fedora-suds-list] Integration into a async framework Message-ID: <9244db460901280423h2c2cb720g66d2e7271337b2c4@mail.gmail.com> Hello, I want to integrate suds into async framework, in my case twisted. So I looking for the best way to do this. Has anyone done such a thing before ? I don't see an easy way to implement callback handling into suds, so the preferably way seems to directly use the transport mechanism from the framework instead. For doing so I only need the pure payload (a instance of Request seems to have anything I need). For the transport I use the twisted modules. The result should of course be fed back into suds to get out the nice suds objects. So to be specific: - How can I get the Request instance that normally would be given over to the Transport instance ? - How can I get the suds object by supplying the pure response from the remote side ? Greetings Steffen From rjalves at igc.gulbenkian.pt Wed Jan 28 12:49:31 2009 From: rjalves at igc.gulbenkian.pt (Renato Alves) Date: Wed, 28 Jan 2009 12:49:31 +0000 Subject: [Fedora-suds-list] Integration into a async framework In-Reply-To: <9244db460901280423h2c2cb720g66d2e7271337b2c4@mail.gmail.com> References: <9244db460901280423h2c2cb720g66d2e7271337b2c4@mail.gmail.com> Message-ID: <4980545B.9080704@igc.gulbenkian.pt> Quoting Steffen Oschatz on 01/28/2009 12:23 PM: > Hello, > > I want to integrate suds into async framework, in my case twisted. > So I looking for the best way to do this. Has anyone done such a thing before ? > > I don't see an easy way to implement callback handling into suds, > so the preferably way seems to directly use the transport mechanism > from the framework instead. > > For doing so I only need the pure payload (a instance of Request seems > to have anything I need). > For the transport I use the twisted modules. The result should of > course be fed back into suds to get out the nice suds objects. > > So to be specific: > - How can I get the Request instance that normally would be given over > to the Transport instance ? > - How can I get the suds object by supplying the pure response from > the remote side ? > > Greetings > Steffen > > _______________________________________________ > fedora-suds-list mailing list > fedora-suds-list at redhat.com > https://www.redhat.com/mailman/listinfo/fedora-suds-list Hi Steffen, I'm using suds + twisted. I haven't implemented this in an async way directly on suds but instead using a cached thread pool of suds clients + queue. It's not the most elegant way but it solves my problem. Basically when the daemon (twisted) launches it fires up 5 extra threads each one creating a soap session using suds (caching the wsdl and a session ticket with the soap server). The threads are partially idle (checking once in a while the ticket validity) until some request gets queued. Then they do their thing in a blocking manner (due to some server constraints) and when they finish they put the result in a global dict. This dict is accessible by the main thread that runs twisted and a simplified xmlrpc server. With this approach I can not only skip the performance penalty of starting a new soap session, authenticate and all that, but also, keep a temporary cache of the results. If you think any of this code could be of use to you, give me a call I will be glad to send you some snippets. From gfranxman at gmail.com Wed Jan 28 16:41:49 2009 From: gfranxman at gmail.com (Glenn Franxman) Date: Wed, 28 Jan 2009 11:41:49 -0500 Subject: [Fedora-suds-list] Re: WSSE In-Reply-To: <1d6a70330901271556v4c8b5849o3554499ef883f876@mail.gmail.com> References: <1d6a70330901271555t191164esc6ec840a9ce0dd5a@mail.gmail.com> <1d6a70330901271556v4c8b5849o3554499ef883f876@mail.gmail.com> Message-ID: <1d6a70330901280841p2a56504o938e51c35095354@mail.gmail.com> I'm stepping through the bindings code using pdb and I think I've found a bug that is probably in the wsdl parser. The wsdl for the service I am calling is here: https://sandbox.amp.yahooapis.com/services/V1/LocationService?wsdl I think the interesting bit is: I'm stepping through the call to suds/bindings/binding.py part_types( method, header=True ) 308 B-> pts = self.part_types(method, header=True) 309 for header in headers: 310 if len(pts) == n: break 311 p = self.mkheader(method, pts[n], header) 312 if p is not None: 313 ns = pts[n][1].namespace() ... > /usr/lib/python2.5/site-packages/suds/bindings/binding.py(346)part_types() -> body = method.soap.input.body (Pdb) l 341 @return: A list of parameter definitions 342 @rtype: [I{pdef},] 343 """ 344 result = [] 345 if input: 346 -> body = method.soap.input.body 347 if header: 348 parts = method.soap.input.header.message.parts 349 else: 350 parts = method.message.input.parts 351 else: (Pdb) method.soap.input.header.message.parts [(Part){ root = name = "license" qname[] = "license", "http://amp.yahooapis.com/V1", element = "(u'license', u'http://amp.yahooapis.com/V1')" type = "None" }] I think it ( and I ) are expecting method.soap.input.header.message.parts to include tns:accountID and tns:Security, not just tns:license. The headers struct in suds/bindings/binding.py(308) headercontent() is: (property:license = "...REMOVED...", property:accountID = "...REMOVED...", (Security){ UsernameToken = (UsernameToken){ Username = "REMOVED" Password = "REMOVED" } }) I built the call like so: client = Client( apt_wsdl ) ### build account headers license = client.factory.create('ns0:license') license.set( License_Key ) accountid = client.factory.create('ns0:accountID') accountid.set( Master_Account_Id ) sectoken = client.factory.create( 'ns1:Security' ) usernametoken = client.factory.create( 'ns1:UsernameToken' ) usernametoken.Username = Username usernametoken.Password = Password sectoken.UsernameToken = usernametoken ### apply the soap headers client.set_options(soapheaders= (license, accountid, sectoken,) ) client.service.getAccountLocation( ) On Tue, Jan 27, 2009 at 6:56 PM, Glenn Franxman wrote: > Oops, I meant what happened to the accountID header, not license. > > On Tue, Jan 27, 2009 at 6:55 PM, Glenn Franxman wrote: >> I'm only just getting started with SOAP, so forgive the n00b questions. >> >> I'm trying to create calls that look something along the lines of: >> >> >> > xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext" >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xmlns="http://amp.yahooapis.com/V1"> >> >> >> >> user >> password >> >> >> 3cf33e7-5ad1-3a9-093-3681f55eb0 >> 9966673 >> >> >> ... >> >> >> >> To that end, I'm trying to add clauses for wsse:Security, license and accountID. >> That section of my code looks like: >> >> ... >> #construct WS-Security header for username/password >> WSSE_NS = "http://schemas.xmlsoap.org/ws/2002/07/secext" >> client.add_prefix( 'wsse', WSSE_NS ) >> >> #build account headers >> license = client.factory.create('license') >> license.set( License_Key ) >> accountid = client.factory.create('accountID') >> accountid.set( Master_Account_Id ) >> >> client.set_options(soapheaders=( license, accountid)) >> ... >> >> and it is resulting in: >> >> >> > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xmlns:tns="http://amp.yahooapis.com/V1" >> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> >> >> ... >> >> >> ... >> >> >> >> I'm still trying to feel my way through this, but I'm already wondering: >> >> What happened to the wsse namespace that I added? >> What happened to the license header that I added? >> >> Has anyone successfully used WSSE with suds? >> > From nospamus at gmail.com Thu Jan 29 04:32:51 2009 From: nospamus at gmail.com (Bryan Hughes) Date: Wed, 28 Jan 2009 23:32:51 -0500 Subject: [Fedora-suds-list] Can Suds handle WSDL attachments? Message-ID: <4badce440901282032xfaee2ckc23c9317796acffd@mail.gmail.com> I'm interested in using Suds, but I need to be certain that it can handle attachments. Can someone please comment on Suds ability to handle attachments? -------------- next part -------------- An HTML attachment was scrubbed... URL: From steffen.oschatz at googlemail.com Thu Jan 29 17:35:16 2009 From: steffen.oschatz at googlemail.com (Steffen Oschatz) Date: Thu, 29 Jan 2009 18:35:16 +0100 Subject: [Fedora-suds-list] Integration into a async framework In-Reply-To: <4980545B.9080704@igc.gulbenkian.pt> References: <9244db460901280423h2c2cb720g66d2e7271337b2c4@mail.gmail.com> <4980545B.9080704@igc.gulbenkian.pt> Message-ID: <9244db460901290935j6c35479csc4187fd72f60544b@mail.gmail.com> I also thought about wrapping the whole remote call in a deferToThread, but of course your solution sounds more powerful. I would be really thankful if you could provide some snippets. On Wed, Jan 28, 2009 at 1:49 PM, Renato Alves wrote: > > Hi Steffen, > > I'm using suds + twisted. I haven't implemented this in an async way > directly on suds but instead using a cached thread pool of suds clients + > queue. It's not the most elegant way but it solves my problem. > > Basically when the daemon (twisted) launches it fires up 5 extra threads > each one creating a soap session using suds (caching the wsdl and a session > ticket with the soap server). The threads are partially idle (checking once > in a while the ticket validity) until some request gets queued. Then they do > their thing in a blocking manner (due to some server constraints) and when > they finish they put the result in a global dict. This dict is accessible by > the main thread that runs twisted and a simplified xmlrpc server. With this > approach I can not only skip the performance penalty of starting a new soap > session, authenticate and all that, but also, keep a temporary cache of the > results. > > If you think any of this code could be of use to you, give me a call I will > be glad to send you some snippets. > From cpina at nvidia.com Fri Jan 30 20:00:54 2009 From: cpina at nvidia.com (=?ISO-8859-1?Q?Charles_Pi=F1a?=) Date: Fri, 30 Jan 2009 12:00:54 -0800 Subject: [Fedora-suds-list] Issue with Message-ID: <49835C76.8010606@nvidia.com> First, thank you for a wonderful SOAP client implementation. I have tried a few of the other options out there, and let me say that the SUDS implementation is fantastic. Truly best of breed. *cough* but... :-) I'm encountering a rather strange issue when calling service methods. SUDS is complaining about a _None, or @None object not being found. Could this be an issue with my setup and/or WSDL? It appears to be generated in part of the header portion of the SUDS code that's called when invoking my service method, but I can't see where I could be messing anything up there. The code is simple. Any insight? I can provide excerpts of the WSDL if needed, but would prefer to keep it internal. #!/usr/bin/env python from suds.client import Client import logging logging.basicConfig(level=logging.INFO) logging.getLogger('suds.client').setLevel(logging.DEBUG) url = "file:///Users/okay/Projects/auto/nv.xml" client = Client(url) caller = client.factory.create("ServiceCaller") caller.UserID = 6674 caller.UserName = 'cpina' caller.Host = 'tetris.local' caller.IPAddress = '213.213.2.213' caller.ServiceName = 'NV' client.set_options(soapheaders=caller) print client.service.GetBug(BugID=508000) ##### output #### ERROR:suds.resolver:(@None) not-found Traceback (most recent call last): File "./test.py", line 23, in print client.service.GetBug(BugID=508000) File "build/bdist.macosx-10.5-i386/egg/suds/client.py", line 229, in __call__ File "build/bdist.macosx-10.5-i386/egg/suds/client.py", line 356, in call File "build/bdist.macosx-10.5-i386/egg/suds/client.py", line 229, in __call__ File "build/bdist.macosx-10.5-i386/egg/suds/client.py", line 399, in call File "build/bdist.macosx-10.5-i386/egg/suds/client.py", line 451, in invoke File "build/bdist.macosx-10.5-i386/egg/suds/bindings/binding.py", line 95, in get_message File "build/bdist.macosx-10.5-i386/egg/suds/bindings/binding.py", line 311, in headercontent File "build/bdist.macosx-10.5-i386/egg/suds/bindings/binding.py", line 259, in mkheader File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 391, in process File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 406, in append File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 139, in append File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 307, in append File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 200, in append File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 405, in append File "build/bdist.macosx-10.5-i386/egg/suds/bindings/marshaller.py", line 540, in start suds.TypeNotFound: Type not found: '_None' ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ----------------------------------------------------------------------------------- From rjalves at igc.gulbenkian.pt Sat Jan 31 12:48:13 2009 From: rjalves at igc.gulbenkian.pt (Renato Alves) Date: Sat, 31 Jan 2009 12:48:13 +0000 Subject: [Fedora-suds-list] Integration into a async framework Message-ID: <4984488D.3080407@igc.gulbenkian.pt> import threading import Queue from twisted.web import xmlrpc, server from twisted.internet import reactor (...) class ThreadedSuds(threading.Thread): def run(self): # Prepare SOAP client # SServer is a class wrapper with some stuff specific to the # soap server I'm using, but basically sets up a suds client # instance soap = SServer(url='file:./wsdl', user='xxxx', passwd='xxxx') # Make thread run until STOPped while True: try: data = seq_queue.get(True, 60) except Queue.Empty: # Checks for ticket validity and requests a new one if # expired soap.check_ticket() data = None if data is not None: ticket, seq = data # Do your soap requests here (...) # Declare ticket as finished and return results soap_results[ticket] = results (...) class SequenceServer(xmlrpc.XMLRPC): """Broker calls """ def xmlrpc_ping(self): """Reply with pong to let know server is alive """ return 'pong' def xmlrpc_includeseq(self, seq): """Put seq in queue """ # generate a new ticket (MD5) ticket = generate_ticket(seq) # queue the sequence seq_queue.put([ticket, seq]) return ticket (...) def main(): # queue should be accessible to all threads global sequence_queue # results should also be accessible to all threads global soap_results sequence_queue = Queue.Queue(100) soap_results = dict() # Start 5 threads for SOAP client threads = [ThreadedSuds() for x in range(5)] for thread in threads: # Daemonize threads - if (thread = daemon) program will close # without waiting for threads to finish # New API > 2.6.* thread.daemon = True # Old API < 2.5.* thread.setDaemon(True) # Start threads thread.start() f = server.Site(SequenceServer()) reactor.listenTCP(7080, f, interface="localhost") reactor.run() if __name__ == '__main__': main() -- Renato Alves