@@ -39,11 +39,11 @@ | |||
# | |||
################################################################################ | |||
""" | |||
from __future__ import nested_scopes | |||
ident = '$Id: Client.py,v 1.27 2005/02/21 20:27:09 warnes Exp $' | |||
from version import __version__ | |||
from __future__ import nested_scopes | |||
#import xml.sax | |||
import urllib | |||
@@ -125,7 +125,7 @@ class HTTPTransport: | |||
return original_namespace | |||
else: | |||
return original_namespace | |||
# Need a Timeout someday? | |||
def call(self, addr, data, namespace, soapaction = None, encoding = None, | |||
http_proxy = None, config = Config): | |||
@@ -164,7 +164,7 @@ class HTTPTransport: | |||
# if user is not a user:passwd format | |||
# we'll receive a failure from the server. . .I guess (??) | |||
if addr.user != None: | |||
val = base64.encodestring(addr.user) | |||
val = base64.encodestring(addr.user) | |||
r.putheader('Authorization','Basic ' + val.replace('\012','')) | |||
# This fixes sending either "" or "None" | |||
@@ -218,7 +218,7 @@ class HTTPTransport: | |||
message_len = int(content_length) | |||
except: | |||
message_len = -1 | |||
if message_len < 0: | |||
# Content-Length missing or invalid; just read the whole socket | |||
# This won't work with HTTP/1.1 chunked encoding | |||
@@ -233,7 +233,7 @@ class HTTPTransport: | |||
print "headers=", headers | |||
print "content-type=", content_type | |||
print "data=", data | |||
if config.dumpHeadersIn: | |||
s = 'Incoming HTTP headers' | |||
debugHeader(s) | |||
@@ -246,7 +246,7 @@ class HTTPTransport: | |||
def startswith(string, val): | |||
return string[0:len(val)] == val | |||
if code == 500 and not \ | |||
( startswith(content_type, "text/xml") and message_len > 0 ): | |||
raise HTTPError(code, msg) | |||
@@ -268,7 +268,7 @@ class HTTPTransport: | |||
new_ns = None | |||
else: | |||
new_ns = self.getNS(namespace, data) | |||
# return response payload | |||
return data, new_ns | |||
@@ -316,10 +316,10 @@ class SOAPProxy: | |||
self.channel_mode = config.channel_mode | |||
self.delegation_mode = config.delegation_mode | |||
#end GSI Additions | |||
def invoke(self, method, args): | |||
return self.__call(method, args, {}) | |||
def __call(self, name, args, kw, ns = None, sa = None, hd = None, | |||
ma = None): | |||
@@ -334,7 +334,7 @@ class SOAPProxy: | |||
sa = self.soapaction | |||
else: | |||
sa = name | |||
if hd: # Get header | |||
if type(hd) == TupleType: | |||
hd = hd[0] | |||
@@ -368,7 +368,7 @@ class SOAPProxy: | |||
# | |||
# See if we have a fault handling vector installed in our | |||
# config. If we do, invoke it. If it returns a true value, | |||
# retry the call. | |||
# retry the call. | |||
# | |||
# In any circumstance other than the fault handler returning | |||
# true, reraise the exception. This keeps the semantics of this | |||
@@ -390,7 +390,7 @@ class SOAPProxy: | |||
encoding = self.encoding, | |||
http_proxy = self.http_proxy, | |||
config = self.config) | |||
p, attrs = parseSOAPRPC(r, attrs = 1) | |||
@@ -418,7 +418,7 @@ class SOAPProxy: | |||
count += 1 | |||
t = getattr(p, i) | |||
if count == 1: # Only one piece of data, bubble it up | |||
p = t | |||
p = t | |||
except: | |||
pass | |||
@@ -468,7 +468,7 @@ class SOAPProxy: | |||
return self.__f_call(*args, **kw) | |||
else: | |||
return self.__r_call(*args, **kw) | |||
def __getattr__(self, name): | |||
if name == '__del__': | |||
raise AttributeError, name | |||
@@ -32,11 +32,11 @@ | |||
# | |||
################################################################################ | |||
""" | |||
from __future__ import nested_scopes | |||
ident = '$Id: Types.py,v 1.19 2005/02/22 04:29:43 warnes Exp $' | |||
from version import __version__ | |||
from __future__ import nested_scopes | |||
import UserList | |||
import base64 | |||
@@ -76,7 +76,7 @@ class anyType: | |||
else: | |||
self._ns = self._validURIs[0] | |||
self._name = name | |||
self._typed = typed | |||
self._attrs = {} | |||
@@ -142,7 +142,7 @@ class anyType: | |||
value = unicode(value) | |||
self._attrs[attr] = value | |||
def _setAttrs(self, attrs): | |||
if type(attrs) in (ListType, TupleType): | |||
@@ -1275,7 +1275,7 @@ class compoundType(anyType): | |||
retval[name] = getattr(self,name) | |||
return retval | |||
def __getitem__(self, item): | |||
if type(item) == IntType: | |||
return self.__dict__[self._keyord[item]] | |||
@@ -1300,7 +1300,7 @@ class compoundType(anyType): | |||
else: | |||
self.__dict__[name] = value | |||
self._keyord.append(name) | |||
def _placeItem(self, name, value, pos, subpos = 0, attrs = None): | |||
if subpos == 0 and type(self.__dict__[name]) != ListType: | |||
@@ -1421,10 +1421,10 @@ class arrayType(UserList.UserList, compoundType): | |||
else: | |||
retval = {} | |||
def fun(x): retval[str(x).encode(encoding)] = self.data[x] | |||
map( fun, range(len(self.data)) ) | |||
return retval | |||
def __getitem__(self, item): | |||
try: | |||
return self.data[int(item)] | |||
@@ -1589,7 +1589,7 @@ class faultType(structType, Error): | |||
__str__ = __repr__ | |||
def __call__(self): | |||
return (self.faultcode, self.faultstring, self.detail) | |||
return (self.faultcode, self.faultstring, self.detail) | |||
class SOAPException(Exception): | |||
def __init__(self, code="", string="", detail=None): | |||
@@ -1630,7 +1630,7 @@ class MethodFailed(Exception): | |||
def __str__(self): | |||
return repr(self.value) | |||
####### | |||
# Convert complex SOAPpy objects to native python equivalents | |||
####### | |||
@@ -1642,16 +1642,16 @@ def simplify(object, level=0): | |||
This function recursively converts the passed 'container' object, | |||
and all public subobjects. (Private subobjects have names that | |||
start with '_'.) | |||
Conversions: | |||
- faultType --> raise python exception | |||
- arrayType --> array | |||
- compoundType --> dictionary | |||
""" | |||
if level > 10: | |||
return object | |||
if isinstance( object, faultType ): | |||
if object.faultstring == "Required Header Misunderstood": | |||
raise RequiredHeaderMismatch(object.detail) | |||
@@ -1695,13 +1695,13 @@ def simplify_contents(object, level=0): | |||
This function recursively converts the sub-objects contained in a | |||
'container' object to simple python types. | |||
Conversions: | |||
- faultType --> raise python exception | |||
- arrayType --> array | |||
- compoundType --> dictionary | |||
""" | |||
if level>10: return object | |||
if isinstance( object, faultType ): | |||
@@ -1709,7 +1709,7 @@ def simplify_contents(object, level=0): | |||
if isPublic(k): | |||
setattr(object, k, simplify(object[k], level=level+1)) | |||
raise object | |||
elif isinstance( object, arrayType ): | |||
elif isinstance( object, arrayType ): | |||
data = object._aslist() | |||
for k in range(len(data)): | |||
object[k] = simplify(data[k], level=level+1) | |||
@@ -1730,7 +1730,7 @@ def simplify_contents(object, level=0): | |||
elif type(object)==list: | |||
for k in range(len(object)): | |||
object[k] = simplify(object[k]) | |||
return object | |||