@@ -18,9 +18,9 @@ def usage (error = None): | |||
sys.stdout = sys.stderr | |||
if error != None: | |||
print error | |||
print(error) | |||
print """usage: %s [options] [server ...] | |||
print("""usage: %s [options] [server ...] | |||
If a long option shows an argument is mandatory, it's mandatory for the | |||
equivalent short option also. | |||
@@ -38,7 +38,7 @@ def usage (error = None): | |||
-t, --stacktrace print a stack trace on each unexpected failure | |||
-T, --always-stacktrace | |||
print a stack trace on any failure | |||
""" % (sys.argv[0], DEFAULT_SERVERS_FILE), | |||
""" % (sys.argv[0], DEFAULT_SERVERS_FILE), end=' ') | |||
sys.exit (0) | |||
@@ -46,18 +46,18 @@ def usage (error = None): | |||
def methodUsage (): | |||
sys.stdout = sys.stderr | |||
print "Methods are specified by number. Multiple methods can be " \ | |||
print("Methods are specified by number. Multiple methods can be " \ | |||
"specified using a\ncomma-separated list of numbers or ranges. " \ | |||
"For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n" | |||
"For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n") | |||
print "The available methods are:\n" | |||
print("The available methods are:\n") | |||
half = (len (DEFAULT_METHODS) + 1) / 2 | |||
for i in range (half): | |||
print "%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), | |||
print("%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), end=' ') | |||
if i + half < len (DEFAULT_METHODS): | |||
print "%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), | |||
print("%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), end=' ') | |||
print() | |||
sys.exit (0) | |||
@@ -121,7 +121,7 @@ def str2list (s): | |||
else: | |||
l[int (i)] = 1 | |||
l = l.keys () | |||
l = list(l.keys ()) | |||
l.sort () | |||
return l | |||
@@ -144,7 +144,7 @@ def Buy(serv, sa, epname): | |||
shipTo_d = {"name":"Buyer One ", "address":"1 1st Street ", | |||
"city":"New York ", "state":"NY ", "zipCode":"10000 "} | |||
for k,v in shipTo_d.items(): | |||
for k,v in list(shipTo_d.items()): | |||
shipTo_d[k] = v[:-1] | |||
itemd1 = SOAP.structType( {"name":"widg1","quantity":200,"price":SOAP.decimalType(45.99), "_typename":"LineItem"}) | |||
@@ -200,8 +200,7 @@ def main(): | |||
elif opt in ('-s', '--servers'): | |||
servers = arg | |||
else: | |||
raise AttributeError, \ | |||
"Recognized but unimplemented option `%s'" % opt | |||
raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
except SystemExit: | |||
raise | |||
except: | |||
@@ -213,7 +212,7 @@ def main(): | |||
servers = readServers(servers) | |||
if methodnums == None: | |||
methodnums = range (1, len (DEFAULT_METHODS) + 1) | |||
methodnums = list(range(1, len (DEFAULT_METHODS) + 1)) | |||
limitre = re.compile ('|'.join (args), re.IGNORECASE) | |||
@@ -239,48 +238,48 @@ def main(): | |||
raise | |||
except: | |||
if 'n' in output: | |||
print title, "test not yet implemented" | |||
print(title, "test not yet implemented") | |||
notimp += 1 | |||
continue | |||
try: | |||
res = fn (serv, s['soapaction'], s['name']) | |||
if s['nonfunctional'].has_key (name): | |||
print title, "succeeded despite marked nonfunctional" | |||
if name in s['nonfunctional']: | |||
print(title, "succeeded despite marked nonfunctional") | |||
elif 's' in output: | |||
print title, "succeeded " | |||
print(title, "succeeded ") | |||
succeed += 1 | |||
except KeyboardInterrupt: | |||
print "fail" | |||
print("fail") | |||
raise | |||
except: | |||
if s['nonfunctional'].has_key (name): | |||
if name in s['nonfunctional']: | |||
if 'F' in output: | |||
t = 'as expected' | |||
if s['nonfunctional'][name] != '': | |||
t += ', ' + s['nonfunctional'][name] | |||
print title, "failed (%s) -" %t, sys.exc_info()[1] | |||
print(title, "failed (%s) -" %t, sys.exc_info()[1]) | |||
failok += 1 | |||
else: | |||
if 'f' in output: | |||
print title, "failed -", str (sys.exc_info()[1]) | |||
print(title, "failed -", str (sys.exc_info()[1])) | |||
fail += 1 | |||
if stats: | |||
print " Tests ended at:", time.ctime (time.time()) | |||
print(" Tests ended at:", time.ctime (time.time())) | |||
if stats > 0: | |||
print " Total tests: %d" % total | |||
print " Successes: %d (%3.2f%%)" % \ | |||
(succeed, 100.0 * succeed / total) | |||
print(" Total tests: %d" % total) | |||
print(" Successes: %d (%3.2f%%)" % \ | |||
(succeed, 100.0 * succeed / total)) | |||
if stats > 0 or fail > 0: | |||
print "Failed unexpectedly: %d (%3.2f%%)" % \ | |||
(fail, 100.0 * fail / total) | |||
print("Failed unexpectedly: %d (%3.2f%%)" % \ | |||
(fail, 100.0 * fail / total)) | |||
if stats > 0: | |||
print " Failed as expected: %d (%3.2f%%)" % \ | |||
(failok, 100.0 * failok / total) | |||
print(" Failed as expected: %d (%3.2f%%)" % \ | |||
(failok, 100.0 * failok / total)) | |||
if stats > 0 or notimp > 0: | |||
print " Not implemented: %d (%3.2f%%)" % \ | |||
(notimp, 100.0 * notimp / total) | |||
print(" Not implemented: %d (%3.2f%%)" % \ | |||
(notimp, 100.0 * notimp / total)) | |||
return fail + notimp | |||
@@ -15,7 +15,7 @@ def SimpleBuy(Address, ProductName, Quantity): | |||
# the strings are of len > 0 | |||
global NUMSIMPLEBUYS | |||
NUMSIMPLEBUYS += 1 | |||
if Quantity < 1: raise ValueError, "must order at least one" | |||
if Quantity < 1: raise ValueError("must order at least one") | |||
else: return "Receipt for %d %s(s) bought from %s" % (int(Quantity), ProductName, serverstring) | |||
@@ -23,7 +23,7 @@ def RequestForQuote(ProductName, Quantity): | |||
# type-checks and makes sure Quantity >= 1 | |||
global NUMREQUESTS | |||
NUMREQUESTS += 1 | |||
if Quantity < 1: raise ValueError, "must order at least 1" | |||
if Quantity < 1: raise ValueError("must order at least 1") | |||
else: | |||
import whrandom | |||
mult = whrandom.random() | |||
@@ -33,7 +33,7 @@ def RequestForQuote(ProductName, Quantity): | |||
times += 1 | |||
mult += 0.5 | |||
mult = round(mult, 3) | |||
print mult, times | |||
print(mult, times) | |||
return SOAP.doubleType(round(mult*int(Quantity),2)) | |||
@@ -51,9 +51,9 @@ def Buy(**kw): | |||
POkeys_expected = ["shipTo","billTo","items","poID","createDate"] | |||
POkeys_expected.sort() | |||
if POkeys != POkeys_expected: | |||
raise ValueError, "struct 'PurchaseOrder' needs %s, %s, %s, %s, and %s" % tuple(POkeys_expected) | |||
raise ValueError("struct 'PurchaseOrder' needs %s, %s, %s, %s, and %s" % tuple(POkeys_expected)) | |||
except: | |||
raise TypeError, "'PurchaseOrder' missing one or more element(s)" | |||
raise TypeError("'PurchaseOrder' missing one or more element(s)") | |||
try: | |||
btkeys = PurchaseOrder["billTo"]["_keyord"] | |||
@@ -61,7 +61,7 @@ def Buy(**kw): | |||
btkeys_expected = ["address","zipCode","name","state","city"] | |||
btkeys_expected.sort() | |||
except: | |||
raise TypeError, "'billTo' missing one or more elements" | |||
raise TypeError("'billTo' missing one or more elements") | |||
try: | |||
stkeys = PurchaseOrder["shipTo"]["_keyord"] | |||
@@ -69,7 +69,7 @@ def Buy(**kw): | |||
stkeys_expected = ["address","zipCode","name","state","city"] | |||
stkeys_expected.sort() | |||
except: | |||
raise TypeError, "'shipTo' missing one or more elements" | |||
raise TypeError("'shipTo' missing one or more elements") | |||
try: | |||
@@ -90,7 +90,7 @@ def Buy(**kw): | |||
return retstring | |||
except: | |||
raise TypeError, "items must be an array of 'item' structs" | |||
raise TypeError("items must be an array of 'item' structs") | |||
def Ping(): | |||
global NUMPINGS | |||
@@ -106,7 +106,7 @@ def Monitor(str): | |||
return "(Buys, RequestForQuote(s),SimpleBuy(s), Ping(s)) = " + \ | |||
repr( (NUMBUYS,NUMREQUESTS,NUMSIMPLEBUYS, NUMPINGS) ) | |||
else: | |||
raise ValueError, "not the right string" | |||
raise ValueError("not the right string") | |||
def Clear(str): | |||
if str=="actzero": | |||
@@ -121,16 +121,16 @@ def Clear(str): | |||
return "(Buys, RequestForQuote(s),SimpleBuy(s), Ping(s)) = " + \ | |||
repr( (NUMBUYS,NUMREQUESTS,NUMSIMPLEBUYS, NUMPINGS) ) | |||
else: | |||
raise ValueError, "not the right string" | |||
raise ValueError("not the right string") | |||
if __name__ == "__main__": | |||
if len(sys.argv) > 1: | |||
try: | |||
port = int(sys.argv[1]) | |||
if port not in range(2000,15000): raise ValueError | |||
if port not in list(range(2000,15000)): raise ValueError | |||
except: | |||
print "port must be a number between 2000 and 15000" | |||
print("port must be a number between 2000 and 15000") | |||
sys.exit(1) | |||
else: port = 9000 | |||
namespace = "http://www.soapinterop.org/Bid" | |||
@@ -4,15 +4,15 @@ import getopt | |||
def usage(): | |||
print """usage: %s [options] | |||
print("""usage: %s [options] | |||
-m, --method=METHOD#[,METHOD#...] specify METHOD# of ? for the list | |||
-p, --port=PORT# allows to specify PORT# of server | |||
""" | |||
""") | |||
sys.exit(1) | |||
def methodUsage(): | |||
print "The available methods are:" | |||
print "1. Monitor \t\t2. Clear" | |||
print("The available methods are:") | |||
print("1. Monitor \t\t2. Clear") | |||
sys.exit(0) | |||
@@ -29,7 +29,7 @@ try: | |||
elif opt in ('-p', '--port'): | |||
port = int(arg) | |||
else: | |||
raise AttributeError, "Recognized but unimpl option '%s'" % opt | |||
raise AttributeError("Recognized but unimpl option '%s'" % opt) | |||
except SystemExit: | |||
raise | |||
except: | |||
@@ -41,10 +41,10 @@ ns = "http://www.soapinterop.org/Bid" | |||
serv = SOAP.SOAPProxy(ep, namespace =ns, soapaction = sa) | |||
if methodnum == 1: | |||
print serv.Monitor(str="actzero") | |||
print(serv.Monitor(str="actzero")) | |||
elif methodnum == 2: | |||
print serv.Clear(str="actzero") | |||
print(serv.Clear(str="actzero")) | |||
else: | |||
print "invalid methodnum" | |||
print("invalid methodnum") | |||
methodUsage() | |||
@@ -8,12 +8,12 @@ srv = SOAP.SOAPProxy('http://localhost:10080/') | |||
for p in ('good param', 'ok param'): | |||
ret = srv.badparam(p) | |||
if isinstance(ret, SOAP.faultType): | |||
print ret | |||
print(ret) | |||
else: | |||
print 'ok' | |||
print('ok') | |||
dt = SOAP.dateTimeType(time.localtime(time.time())) | |||
print srv.dt(dt) | |||
print(srv.dt(dt)) | |||
@@ -27,7 +27,7 @@ class soap_handler: | |||
def continue_request(self, data, request): | |||
# Everthing that follows is cripped from do_POST(). | |||
if self.config.debug: | |||
print "\n***RECEIVING***\n", data, "*" * 13 + "\n" | |||
print("\n***RECEIVING***\n", data, "*" * 13 + "\n") | |||
sys.stdout.flush() | |||
try: | |||
@@ -47,8 +47,8 @@ class soap_handler: | |||
try: | |||
# First look for registered functions | |||
if self.funcmap.has_key(ns) and \ | |||
self.funcmap[ns].has_key(method): | |||
if ns in self.funcmap and \ | |||
method in self.funcmap[ns]: | |||
f = self.funcmap[ns][method] | |||
else: # Now look at registered objects | |||
# Check for nested attributes | |||
@@ -86,18 +86,18 @@ class soap_handler: | |||
if f.keywords: | |||
tkw = {} | |||
# This is lame, but have to de-unicode keywords | |||
for (k,v) in kw.items(): | |||
for (k,v) in list(kw.items()): | |||
tkw[str(k)] = v | |||
if c: | |||
tkw["_SOAPContext"] = c | |||
fr = apply(f,(),tkw) | |||
fr = f(*(), **tkw) | |||
else: | |||
if c: | |||
fr = apply(f,args,{'_SOAPContext':c}) | |||
fr = f(*args, **{'_SOAPContext':c}) | |||
else: | |||
fr = apply(f,args,{}) | |||
fr = f(*args, **{}) | |||
else: | |||
fr = apply(f,args,{}) | |||
fr = f(*args, **{}) | |||
if type(fr) == type(self) and isinstance(fr, voidType): | |||
resp = buildSOAP(kw = {'%sResponse' % method:fr}, | |||
encoding = self.encoding, | |||
@@ -107,7 +107,7 @@ class soap_handler: | |||
{'%sResponse' % method:{'Result':fr}}, | |||
encoding = self.encoding, | |||
config = self.config) | |||
except Fault, e: | |||
except Fault as e: | |||
resp = buildSOAP(e, config = self.config) | |||
status = 500 | |||
except: | |||
@@ -123,7 +123,7 @@ class soap_handler: | |||
status = 500 | |||
else: | |||
status = 200 | |||
except Fault,e: | |||
except Fault as e: | |||
resp = buildSOAP(e, encoding = self.encoding, | |||
config = self.config) | |||
status = 500 | |||
@@ -147,7 +147,7 @@ class soap_handler: | |||
#self.end_headers() | |||
if self.config.debug: | |||
print "\n***SENDING***\n", resp, "*" * 13 + "\n" | |||
print("\n***SENDING***\n", resp, "*" * 13 + "\n") | |||
sys.stdout.flush() | |||
""" | |||
@@ -171,7 +171,7 @@ class soap_handler: | |||
def registerFunction(self, function, namespace = '', funcName = None): | |||
if not funcName : funcName = function.__name__ | |||
if namespace == '': namespace = self.namespace | |||
if self.funcmap.has_key(namespace): | |||
if namespace in self.funcmap: | |||
self.funcmap[namespace][funcName] = function | |||
else: | |||
self.funcmap[namespace] = {funcName : function} | |||
@@ -40,28 +40,29 @@ | |||
################################################################################ | |||
""" | |||
from __future__ import nested_scopes | |||
ident = '$Id: Client.py 1496 2010-03-04 23:46:17Z pooryorick $' | |||
from version import __version__ | |||
from .version import __version__ | |||
#import xml.sax | |||
import urllib | |||
from types import * | |||
import urllib.request, urllib.parse, urllib.error | |||
from .types import * | |||
import re | |||
import base64 | |||
import socket, httplib | |||
from httplib import HTTPConnection, HTTP | |||
import Cookie | |||
import socket, http.client | |||
from http.client import HTTPConnection, HTTP | |||
import http.cookies | |||
# SOAPpy modules | |||
from Errors import * | |||
from Config import Config | |||
from Parser import parseSOAPRPC | |||
from SOAPBuilder import buildSOAP | |||
from Utilities import * | |||
from Types import faultType, simplify | |||
from .Errors import * | |||
from .Config import Config | |||
from .Parser import parseSOAPRPC | |||
from .SOAPBuilder import buildSOAP | |||
from .Utilities import * | |||
from .Types import faultType, simplify | |||
import collections | |||
################################################################################ | |||
# Client | |||
@@ -74,7 +75,7 @@ def SOAPUserAgent(): | |||
class SOAPAddress: | |||
def __init__(self, url, config = Config): | |||
proto, uri = urllib.splittype(url) | |||
proto, uri = urllib.parse.splittype(url) | |||
# apply some defaults | |||
if uri[0:2] != '//': | |||
@@ -84,7 +85,7 @@ class SOAPAddress: | |||
uri = '//' + uri | |||
proto = 'http' | |||
host, path = urllib.splithost(uri) | |||
host, path = urllib.parse.splithost(uri) | |||
try: | |||
int(host) | |||
@@ -96,15 +97,13 @@ class SOAPAddress: | |||
path = '/' | |||
if proto not in ('http', 'https', 'httpg'): | |||
raise IOError, "unsupported SOAP protocol" | |||
raise IOError("unsupported SOAP protocol") | |||
if proto == 'httpg' and not config.GSIclient: | |||
raise AttributeError, \ | |||
"GSI client not supported by this Python installation" | |||
raise AttributeError("GSI client not supported by this Python installation") | |||
if proto == 'https' and not config.SSLclient: | |||
raise AttributeError, \ | |||
"SSL client not supported by this Python installation" | |||
raise AttributeError("SSL client not supported by this Python installation") | |||
self.user,host = urllib.splituser(host) | |||
self.user,host = urllib.parse.splituser(host) | |||
self.proto = proto | |||
self.host = host | |||
self.path = path | |||
@@ -154,7 +153,7 @@ class HTTPTransport: | |||
def __init__(self): | |||
self.cookies = Cookie.SimpleCookie(); | |||
self.cookies = http.cookies.SimpleCookie(); | |||
def getNS(self, original_namespace, data): | |||
"""Extract the (possibly extended) namespace from the returned | |||
@@ -173,7 +172,7 @@ class HTTPTransport: | |||
def __addcookies(self, r): | |||
'''Add cookies from self.cookies to request r | |||
''' | |||
for cname, morsel in self.cookies.items(): | |||
for cname, morsel in list(self.cookies.items()): | |||
attrs = [] | |||
value = morsel.get('version', '') | |||
if value != '' and value != '0': | |||
@@ -205,7 +204,7 @@ class HTTPTransport: | |||
from pyGlobus.io import GSIHTTP | |||
r = GSIHTTP(real_addr, tcpAttr = config.tcpAttr) | |||
elif addr.proto == 'https': | |||
r = httplib.HTTPS(real_addr, key_file=config.SSL.key_file, cert_file=config.SSL.cert_file) | |||
r = http.client.HTTPS(real_addr, key_file=config.SSL.key_file, cert_file=config.SSL.cert_file) | |||
else: | |||
r = HTTPWithTimeout(real_addr, timeout=timeout) | |||
@@ -223,7 +222,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(urllib.unquote_plus(addr.user)) | |||
val = base64.encodestring(urllib.parse.unquote_plus(addr.user)) | |||
r.putheader('Authorization','Basic ' + val.replace('\012','')) | |||
# This fixes sending either "" or "None" | |||
@@ -235,12 +234,12 @@ class HTTPTransport: | |||
if config.dumpHeadersOut: | |||
s = 'Outgoing HTTP headers' | |||
debugHeader(s) | |||
print "POST %s %s" % (real_path, r._http_vsn_str) | |||
print "Host:", addr.host | |||
print "User-agent: SOAPpy " + __version__ + " (http://pywebsvcs.sf.net)" | |||
print "Content-type:", t | |||
print "Content-length:", len(data) | |||
print 'SOAPAction: "%s"' % soapaction | |||
print("POST %s %s" % (real_path, r._http_vsn_str)) | |||
print("Host:", addr.host) | |||
print("User-agent: SOAPpy " + __version__ + " (http://pywebsvcs.sf.net)") | |||
print("Content-type:", t) | |||
print("Content-length:", len(data)) | |||
print('SOAPAction: "%s"' % soapaction) | |||
debugFooter(s) | |||
r.endheaders() | |||
@@ -248,9 +247,9 @@ class HTTPTransport: | |||
if config.dumpSOAPOut: | |||
s = 'Outgoing SOAP' | |||
debugHeader(s) | |||
print data, | |||
print(data, end=' ') | |||
if data[-1] != '\n': | |||
print() | |||
debugFooter(s) | |||
# send the payload | |||
@@ -259,7 +258,7 @@ class HTTPTransport: | |||
# read response line | |||
code, msg, headers = r.getreply() | |||
self.cookies = Cookie.SimpleCookie(); | |||
self.cookies = http.cookies.SimpleCookie(); | |||
if headers: | |||
content_type = headers.get("content-type","text/xml") | |||
content_length = headers.get("Content-length") | |||
@@ -296,20 +295,20 @@ class HTTPTransport: | |||
data = f.read(message_len) | |||
if(config.debug): | |||
print "code=",code | |||
print "msg=", msg | |||
print "headers=", headers | |||
print "content-type=", content_type | |||
print "data=", data | |||
print("code=",code) | |||
print("msg=", msg) | |||
print("headers=", headers) | |||
print("content-type=", content_type) | |||
print("data=", data) | |||
if config.dumpHeadersIn: | |||
s = 'Incoming HTTP headers' | |||
debugHeader(s) | |||
if headers.headers: | |||
print "HTTP/1.? %d %s" % (code, msg) | |||
print "\n".join(map (lambda x: x.strip(), headers.headers)) | |||
print("HTTP/1.? %d %s" % (code, msg)) | |||
print("\n".join([x.strip() for x in headers.headers])) | |||
else: | |||
print "HTTP/0.9 %d %s" % (code, msg) | |||
print("HTTP/0.9 %d %s" % (code, msg)) | |||
debugFooter(s) | |||
def startswith(string, val): | |||
@@ -322,9 +321,9 @@ class HTTPTransport: | |||
if config.dumpSOAPIn: | |||
s = 'Incoming SOAP' | |||
debugHeader(s) | |||
print data, | |||
print(data, end=' ') | |||
if (len(data)>0) and (data[-1] != '\n'): | |||
print() | |||
debugFooter(s) | |||
if code not in (200, 500): | |||
@@ -434,7 +433,7 @@ class SOAPProxy: | |||
except socket.timeout: | |||
raise SOAPTimeoutError | |||
except Exception, ex: | |||
except Exception as ex: | |||
# | |||
# Call failed. | |||
# | |||
@@ -448,7 +447,7 @@ class SOAPProxy: | |||
# | |||
if hasattr(self.config, "faultHandler"): | |||
if callable(self.config.faultHandler): | |||
if isinstance(self.config.faultHandler, collections.Callable): | |||
call_retry = self.config.faultHandler(self.proxy, ex) | |||
if not call_retry: | |||
raise | |||
@@ -478,7 +477,7 @@ class SOAPProxy: | |||
if throw_struct: | |||
if self.config.debug: | |||
print p | |||
print(p) | |||
raise p | |||
# If unwrap_results=1 and there is only element in the struct, | |||
@@ -489,7 +488,7 @@ class SOAPProxy: | |||
if self.unwrap_results: | |||
try: | |||
count = 0 | |||
for i in p.__dict__.keys(): | |||
for i in list(p.__dict__.keys()): | |||
if i[0] != "_": # don't count the private stuff | |||
count += 1 | |||
t = getattr(p, i) | |||
@@ -514,7 +513,7 @@ class SOAPProxy: | |||
def __getattr__(self, name): # hook to catch method calls | |||
if name in ( '__del__', '__getinitargs__', '__getnewargs__', | |||
'__getstate__', '__setstate__', '__reduce__', '__reduce_ex__'): | |||
raise AttributeError, name | |||
raise AttributeError(name) | |||
return self.__Method(self.__call, name, config = self.config) | |||
# To handle attribute weirdness | |||
@@ -548,7 +547,7 @@ class SOAPProxy: | |||
def __getattr__(self, name): | |||
if name == '__del__': | |||
raise AttributeError, name | |||
raise AttributeError(name) | |||
if self.__name[0] == "_": | |||
# Don't nest method if it is a directive | |||
return self.__class__(self.__call, name, self.__ns, | |||
@@ -34,12 +34,12 @@ | |||
""" | |||
ident = '$Id: Config.py 1298 2006-11-07 00:54:15Z sanxiyn $' | |||
from version import __version__ | |||
from .version import __version__ | |||
import socket | |||
from types import * | |||
from .types import * | |||
from NS import NS | |||
from .NS import NS | |||
################################################################################ | |||
# Configuration class | |||
@@ -58,12 +58,11 @@ class SOAPConfig: | |||
if config: | |||
if not isinstance(config, SOAPConfig): | |||
raise AttributeError, \ | |||
"initializer must be SOAPConfig instance" | |||
raise AttributeError("initializer must be SOAPConfig instance") | |||
s = config.__dict__ | |||
for k, v in s.items(): | |||
for k, v in list(s.items()): | |||
if k[0] != '_': | |||
d[k] = v | |||
else: | |||
@@ -157,13 +156,13 @@ class SOAPConfig: | |||
raise TypeError("Config dumpmap parameter must be a tuple") | |||
self.dumpmap = dumpmap + self.dumpmap | |||
for k, v in kw.items(): | |||
for k, v in list(kw.items()): | |||
if k[0] != '_': | |||
setattr(self, k, v) | |||
def __setattr__(self, name, value): | |||
if name in self.__readonly: | |||
raise AttributeError, "readonly configuration setting" | |||
raise AttributeError("readonly configuration setting") | |||
d = self.__dict__ | |||
@@ -176,19 +175,19 @@ class SOAPConfig: | |||
base, uri = name, 0 | |||
if type(value) == StringType: | |||
if NS.NSMAP.has_key(value): | |||
if value in NS.NSMAP: | |||
n = (value, NS.NSMAP[value]) | |||
elif NS.NSMAP_R.has_key(value): | |||
elif value in NS.NSMAP_R: | |||
n = (NS.NSMAP_R[value], value) | |||
else: | |||
raise AttributeError, "unknown namespace" | |||
raise AttributeError("unknown namespace") | |||
elif type(value) in (ListType, TupleType): | |||
if uri: | |||
n = (value[1], value[0]) | |||
else: | |||
n = (value[0], value[1]) | |||
else: | |||
raise AttributeError, "unknown namespace type" | |||
raise AttributeError("unknown namespace type") | |||
d[base], d[base + 'URI'] = n | |||
@@ -201,8 +200,8 @@ class SOAPConfig: | |||
elif name == 'namespaceStyle': | |||
value = str(value) | |||
if not NS.STMAP.has_key(value): | |||
raise AttributeError, "unknown namespace style" | |||
if value not in NS.STMAP: | |||
raise AttributeError("unknown namespace style") | |||
d[name] = value | |||
n = d['typesNamespace'] = NS.STMAP[value][0] | |||
@@ -41,7 +41,7 @@ | |||
""" | |||
ident = '$Id: Errors.py 921 2005-02-15 16:32:23Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
import exceptions | |||
@@ -43,33 +43,33 @@ GSIServer - Contributed by Ivan R. Judson <judson@mcs.anl.gov> | |||
################################################################################ | |||
""" | |||
from __future__ import nested_scopes | |||
ident = '$Id: GSIServer.py 1468 2008-05-24 01:55:33Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
#import xml.sax | |||
import re | |||
import socket | |||
import sys | |||
import SocketServer | |||
from types import * | |||
import BaseHTTPServer | |||
import socketserver | |||
from .types import * | |||
import http.server | |||
# SOAPpy modules | |||
from Parser import parseSOAPRPC | |||
from Config import SOAPConfig | |||
from Types import faultType, voidType, simplify | |||
from NS import NS | |||
from SOAPBuilder import buildSOAP | |||
from Utilities import debugHeader, debugFooter | |||
from .Parser import parseSOAPRPC | |||
from .Config import SOAPConfig | |||
from .Types import faultType, voidType, simplify | |||
from .NS import NS | |||
from .SOAPBuilder import buildSOAP | |||
from .Utilities import debugHeader, debugFooter | |||
try: from M2Crypto import SSL | |||
except: pass | |||
##### | |||
from Server import * | |||
from .Server import * | |||
from pyGlobus.io import GSITCPSocketServer, ThreadingGSITCPSocketServer | |||
from pyGlobus import ioc | |||
@@ -40,10 +40,10 @@ | |||
################################################################################ | |||
""" | |||
from __future__ import nested_scopes | |||
ident = '$Id: NS.py 1468 2008-05-24 01:55:33Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
############################################################################## | |||
# Namespace Class | |||
@@ -51,7 +51,7 @@ from version import __version__ | |||
def invertDict(dict): | |||
d = {} | |||
for k, v in dict.items(): | |||
for k, v in list(dict.items()): | |||
d[v] = k | |||
return d | |||
@@ -98,7 +98,7 @@ class NS: | |||
STMAP_R = invertDict(STMAP) | |||
def __init__(self): | |||
raise Error, "Don't instantiate this" | |||
raise Error("Don't instantiate this") | |||
@@ -1,17 +1,18 @@ | |||
# SOAPpy modules | |||
import traceback | |||
from Config import Config | |||
from Types import * | |||
from NS import NS | |||
from Utilities import * | |||
from .Config import Config | |||
from .Types import * | |||
from .NS import NS | |||
from .Utilities import * | |||
import string | |||
import xml.sax | |||
from wstools.XMLname import fromXMLname | |||
import collections | |||
try: | |||
from cStringIO import StringIO | |||
from io import StringIO | |||
except ImportError: | |||
from StringIO import StringIO | |||
from io import StringIO | |||
try: from M2Crypto import SSL | |||
except: pass | |||
@@ -21,7 +22,7 @@ from defusedxml.common import DefusedXmlException | |||
ident = '$Id: Parser.py 1497 2010-03-08 06:06:52Z pooryorick $' | |||
from version import __version__ | |||
from .version import __version__ | |||
################################################################################ | |||
@@ -63,7 +64,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
self.contents.append(data) | |||
self.subattrs.append(attrs) | |||
if self.namecounts.has_key(name): | |||
if name in self.namecounts: | |||
self.namecounts[name] += 1 | |||
else: | |||
self.namecounts[name] = 1 | |||
@@ -102,7 +103,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
def toStr( name ): | |||
prefix = name[0] | |||
tag = name[1] | |||
if self._prem_r.has_key(prefix): | |||
if prefix in self._prem_r: | |||
tag = self._prem_r[name[0]] + ':' + name[1] | |||
elif prefix: | |||
tag = prefix + ":" + tag | |||
@@ -118,10 +119,10 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if self._next == "E": | |||
if name[1] != 'Envelope': | |||
raise Error, "expected `SOAP-ENV:Envelope', " \ | |||
"got `%s'" % toStr( name ) | |||
raise Error("expected `SOAP-ENV:Envelope', " \ | |||
"got `%s'" % toStr( name )) | |||
if name[0] != NS.ENV: | |||
raise faultType, ("%s:VersionMismatch" % NS.ENV_T, | |||
raise faultType("%s:VersionMismatch" % NS.ENV_T, | |||
"Don't understand version `%s' Envelope" % name[0]) | |||
else: | |||
self._next = "HorB" | |||
@@ -129,18 +130,17 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if name[0] == NS.ENV and name[1] in ("Header", "Body"): | |||
self._next = None | |||
else: | |||
raise Error, \ | |||
"expected `SOAP-ENV:Header' or `SOAP-ENV:Body', " \ | |||
"got `%s'" % toStr( name ) | |||
raise Error("expected `SOAP-ENV:Header' or `SOAP-ENV:Body', " \ | |||
"got `%s'" % toStr( name )) | |||
elif self._next == "B": | |||
if name == (NS.ENV, "Body"): | |||
self._next = None | |||
else: | |||
raise Error, "expected `SOAP-ENV:Body', " \ | |||
"got `%s'" % toStr( name ) | |||
raise Error("expected `SOAP-ENV:Body', " \ | |||
"got `%s'" % toStr( name )) | |||
elif self._next == "": | |||
raise Error, "expected nothing, " \ | |||
"got `%s'" % toStr( name ) | |||
raise Error("expected nothing, " \ | |||
"got `%s'" % toStr( name )) | |||
if len(self._stack) == 2: | |||
@@ -188,27 +188,27 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
name = fromXMLname(name) # convert to SOAP 1.2 XML name encoding | |||
if self._next == "E": | |||
raise Error, "didn't get SOAP-ENV:Envelope" | |||
raise Error("didn't get SOAP-ENV:Envelope") | |||
if self._next in ("HorB", "B"): | |||
raise Error, "didn't get SOAP-ENV:Body" | |||
raise Error("didn't get SOAP-ENV:Body") | |||
cur = self.popFrame() | |||
attrs = cur.attrs | |||
idval = None | |||
if attrs.has_key((None, 'id')): | |||
if (None, 'id') in attrs: | |||
idval = attrs[(None, 'id')] | |||
if self._ids.has_key(idval): | |||
raise Error, "duplicate id `%s'" % idval | |||
if idval in self._ids: | |||
raise Error("duplicate id `%s'" % idval) | |||
del attrs[(None, 'id')] | |||
root = 1 | |||
if len(self._stack) == 3: | |||
if attrs.has_key((NS.ENC, 'root')): | |||
if (NS.ENC, 'root') in attrs: | |||
root = int(attrs[(NS.ENC, 'root')]) | |||
# Do some preliminary checks. First, if root="0" is present, | |||
@@ -217,9 +217,9 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if root == 0: | |||
if idval == None: | |||
raise Error, "non-root element must have an id" | |||
raise Error("non-root element must have an id") | |||
elif root != 1: | |||
raise Error, "SOAP-ENC:root must be `0' or `1'" | |||
raise Error("SOAP-ENC:root must be `0' or `1'") | |||
del attrs[(NS.ENC, 'root')] | |||
@@ -227,19 +227,19 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
href = attrs.get((None, 'href')) | |||
if href: | |||
if href[0] != '#': | |||
raise Error, "Non-local hrefs are not yet suppported." | |||
raise Error("Non-local hrefs are not yet suppported.") | |||
if self._data != None and \ | |||
string.join(self._data, "").strip() != '': | |||
raise Error, "hrefs can't have data" | |||
raise Error("hrefs can't have data") | |||
href = href[1:] | |||
if self._ids.has_key(href): | |||
if href in self._ids: | |||
data = self._ids[href] | |||
else: | |||
data = RefHolder(name, self._stack[-1]) | |||
if self._refs.has_key(href): | |||
if href in self._refs: | |||
self._refs[href].append(data) | |||
else: | |||
self._refs[href] = [data] | |||
@@ -252,7 +252,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if attrs: | |||
for i in NS.XSI_L: | |||
if attrs.has_key((i, 'type')): | |||
if (i, 'type') in attrs: | |||
kind = attrs[(i, 'type')] | |||
del attrs[(i, 'type')] | |||
@@ -272,11 +272,11 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if attrs: | |||
for i in (NS.XSI, NS.XSI2): | |||
if attrs.has_key((i, 'null')): | |||
if (i, 'null') in attrs: | |||
null = attrs[(i, 'null')] | |||
del attrs[(i, 'null')] | |||
if attrs.has_key((NS.XSI3, 'nil')): | |||
if (NS.XSI3, 'nil') in attrs: | |||
null = attrs[(NS.XSI3, 'nil')] | |||
del attrs[(NS.XSI3, 'nil')] | |||
@@ -291,7 +291,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
# check for nil=1, but watch out for string values | |||
try: | |||
null = int(null) | |||
except ValueError, e: | |||
except ValueError as e: | |||
if not e[0].startswith("invalid literal for int()"): | |||
raise e | |||
null = 0 | |||
@@ -299,7 +299,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if null: | |||
if len(cur) or \ | |||
(self._data != None and string.join(self._data, "").strip() != ''): | |||
raise Error, "nils can't have data" | |||
raise Error("nils can't have data") | |||
data = None | |||
@@ -341,7 +341,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
# XXX What if rule != kind? | |||
if callable(rule): | |||
if isinstance(rule, collections.Callable): | |||
data = rule(string.join(self._data, "")) | |||
elif type(rule) == DictType: | |||
data = structType(name = (ns, name), attrs = attrs) | |||
@@ -444,7 +444,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if idval != None: | |||
self._ids[idval] = data | |||
if self._refs.has_key(idval): | |||
if idval in self._refs: | |||
for i in self._refs[idval]: | |||
i.parent._placeItem(i.name, data, i.pos, i.subpos, attrs) | |||
@@ -459,11 +459,9 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
def endDocument(self): | |||
if len(self._refs) == 1: | |||
raise Error, \ | |||
"unresolved reference " + self._refs.keys()[0] | |||
raise Error("unresolved reference " + list(self._refs.keys())[0]) | |||
elif len(self._refs) > 1: | |||
raise Error, \ | |||
"unresolved references " + ', '.join(self._refs.keys()) | |||
raise Error("unresolved references " + ', '.join(list(self._refs.keys()))) | |||
def startPrefixMapping(self, prefix, uri): | |||
self._prem[prefix] = uri | |||
@@ -502,7 +500,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
else: | |||
raise Exception | |||
except: | |||
raise AttributeError, "invalid Array offset" | |||
raise AttributeError("invalid Array offset") | |||
else: | |||
offset = 0 | |||
@@ -525,7 +523,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
return typedArrayType(None, name, (None, t), attrs, offset, | |||
m.group('rank'), m.group('asize'), elemsname) | |||
except: | |||
raise AttributeError, "invalid Array type `%s'" % kind | |||
raise AttributeError("invalid Array type `%s'" % kind) | |||
# Conversion | |||
@@ -696,7 +694,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
s = float(s) | |||
else: | |||
try: s = int(s) | |||
except ValueError: s = long(s) | |||
except ValueError: s = int(s) | |||
if i < fn: fn = i | |||
@@ -728,7 +726,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
try: | |||
s = int(s) | |||
except ValueError: | |||
s = long(s) | |||
s = int(s) | |||
r.append(s) | |||
@@ -761,7 +759,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
try: | |||
s = int(s) | |||
except ValueError: | |||
s = long(s) | |||
s = int(s) | |||
if i < fn: | |||
fn = i | |||
@@ -794,14 +792,14 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
s = [] | |||
for i in range(1, len(f)): | |||
if d.has_key(f[i]): | |||
if f[i] in d: | |||
s.append(r[i - 1]) | |||
if len(s) == 1: | |||
return s[0] | |||
return tuple(s) | |||
except Exception, e: | |||
raise Error, "invalid %s value `%s' - %s" % (kind, value, e) | |||
except Exception as e: | |||
raise Error("invalid %s value `%s' - %s" % (kind, value, e)) | |||
intlimits = \ | |||
{ | |||
@@ -809,17 +807,17 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
'non-positive-integer': (0, None, 0), | |||
'negativeInteger': (0, None, -1), | |||
'negative-integer': (0, None, -1), | |||
'long': (1, -9223372036854775808L, | |||
9223372036854775807L), | |||
'int': (0, -2147483648L, 2147483647L), | |||
'long': (1, -9223372036854775808, | |||
9223372036854775807), | |||
'int': (0, -2147483648, 2147483647), | |||
'short': (0, -32768, 32767), | |||
'byte': (0, -128, 127), | |||
'nonNegativeInteger': (0, 0, None), | |||
'non-negative-integer': (0, 0, None), | |||
'positiveInteger': (0, 1, None), | |||
'positive-integer': (0, 1, None), | |||
'unsignedLong': (1, 0, 18446744073709551615L), | |||
'unsignedInt': (0, 0, 4294967295L), | |||
'unsignedLong': (1, 0, 18446744073709551615), | |||
'unsignedInt': (0, 0, 4294967295), | |||
'unsignedShort': (0, 0, 65535), | |||
'unsignedByte': (0, 0, 255), | |||
} | |||
@@ -845,12 +843,10 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if elemtype=="ur-type": | |||
return(d) | |||
else: | |||
newarr = map( lambda(di): | |||
self.convertToBasicTypes(d=di, | |||
newarr = [self.convertToBasicTypes(d=di, | |||
t = ( NS.XSD, elemtype), | |||
attrs=attrs, | |||
config=config), | |||
d) | |||
config=config) for di in d] | |||
return newarr | |||
else: | |||
t = (NS.XSD, t[1]) | |||
@@ -885,26 +881,26 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
try: | |||
d = int(d) | |||
if len(attrs): | |||
d = long(d) | |||
d = int(d) | |||
except: | |||
d = long(d) | |||
d = int(d) | |||
return d | |||
if self.intlimits.has_key (t[1]): # range-bounded integer types | |||
if t[1] in self.intlimits: # range-bounded integer types | |||
l = self.intlimits[t[1]] | |||
try: d = int(d) | |||
except: d = long(d) | |||
except: d = int(d) | |||
if l[1] != None and d < l[1]: | |||
raise UnderflowError, "%s too small" % d | |||
raise UnderflowError("%s too small" % d) | |||
if l[2] != None and d > l[2]: | |||
raise OverflowError, "%s too large" % d | |||
raise OverflowError("%s too large" % d) | |||
if l[0] or len(attrs): | |||
return long(d) | |||
return int(d) | |||
return d | |||
if t[1] == "string": | |||
if len(attrs): | |||
return unicode(dnn) | |||
return str(dnn) | |||
try: | |||
return str(dnn) | |||
except: | |||
@@ -915,7 +911,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
return False | |||
if d in ('1', 'true'): | |||
return True | |||
raise AttributeError, "invalid boolean value" | |||
raise AttributeError("invalid boolean value") | |||
if t[1] in ('double','float'): | |||
l = self.floatlimits[t[1]] | |||
s = d.strip().lower() | |||
@@ -933,23 +929,23 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if config.strict_range: | |||
if NaN == d: | |||
if s[0:2] != 'nan': | |||
raise ValueError, "invalid %s: %s" % (t[1], s) | |||
raise ValueError("invalid %s: %s" % (t[1], s)) | |||
elif NegInf == d: | |||
if s[0:3] != '-inf': | |||
raise UnderflowError, "%s too small: %s" % (t[1], s) | |||
raise UnderflowError("%s too small: %s" % (t[1], s)) | |||
elif PosInf == d: | |||
if s[0:2] != 'inf' and s[0:3] != '+inf': | |||
raise OverflowError, "%s too large: %s" % (t[1], s) | |||
raise OverflowError("%s too large: %s" % (t[1], s)) | |||
elif d < 0 and d < l[1]: | |||
raise UnderflowError, "%s too small: %s" % (t[1], s) | |||
raise UnderflowError("%s too small: %s" % (t[1], s)) | |||
elif d > 0 and ( d < l[0] or d > l[2] ): | |||
raise OverflowError, "%s too large: %s" % (t[1], s) | |||
raise OverflowError("%s too large: %s" % (t[1], s)) | |||
elif d == 0: | |||
if type(self.zerofloatre) == StringType: | |||
self.zerofloatre = re.compile(self.zerofloatre) | |||
if self.zerofloatre.search(s): | |||
raise UnderflowError, "invalid %s: %s" % (t[1], s) | |||
raise UnderflowError("invalid %s: %s" % (t[1], s)) | |||
return d | |||
if t[1] in ("dateTime", "date", "timeInstant", "time"): | |||
@@ -974,7 +970,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
else: | |||
return | |||
if t[1] == "anyURI": | |||
return urllib.unquote(collapseWhiteSpace(d)) | |||
return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
if t[1] in ("normalizedString", "token"): | |||
return collapseWhiteSpace(d) | |||
if t[0] == NS.ENC: | |||
@@ -998,14 +994,14 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
except: | |||
pass | |||
raise Error, "unknown or missing binary encoding" | |||
raise Error("unknown or missing binary encoding") | |||
if t[1] == "uri": | |||
return urllib.unquote(collapseWhiteSpace(d)) | |||
return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
if t[1] == "recurringInstant": | |||
return self.convertDateTime(d, t[1]) | |||
if t[0] in (NS.XSD2, NS.ENC): | |||
if t[1] == "uriReference": | |||
return urllib.unquote(collapseWhiteSpace(d)) | |||
return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
if t[1] == "timePeriod": | |||
return self.convertDateTime(d, t[1]) | |||
if t[1] in ("century", "year"): | |||
@@ -1015,7 +1011,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
return self.convertDateTime(d, t[1]) | |||
if t[0] == NS.XSD3: | |||
if t[1] == "anyURI": | |||
return urllib.unquote(collapseWhiteSpace(d)) | |||
return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
if t[1] in ("gYearMonth", "gMonthDay"): | |||
return self.convertDateTime(d, t[1]) | |||
if t[1] == "gYear": | |||
@@ -1039,7 +1035,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
if t[1] == "CDATA": | |||
return collapseWhiteSpace(d) | |||
raise UnknownTypeError, "unknown type `%s'" % (str(t[0]) + ':' + t[1]) | |||
raise UnknownTypeError("unknown type `%s'" % (str(t[0]) + ':' + t[1])) | |||
################################################################################ | |||
@@ -1078,13 +1074,13 @@ def _parseSOAP(xml_str, rules = None, ignore_ext=None, | |||
try: | |||
parser.parse(inpsrc) | |||
except DefusedXmlException, e: | |||
except DefusedXmlException as e: | |||
parser._parser = None | |||
print traceback.format_exc() | |||
print(traceback.format_exc()) | |||
raise e | |||
except xml.sax.SAXParseException, e: | |||
except xml.sax.SAXParseException as e: | |||
parser._parser = None | |||
print traceback.format_exc() | |||
print(traceback.format_exc()) | |||
raise e | |||
return t | |||
@@ -1106,9 +1102,9 @@ def parseSOAPRPC(xml_str, header = 0, body = 0, attrs = 0, rules = None, ignore_ | |||
p = t.body[0] | |||
# Empty string, for RPC this translates into a void | |||
if type(p) in (type(''), type(u'')) and p in ('', u''): | |||
if type(p) in (type(''), type('')) and p in ('', ''): | |||
name = "Response" | |||
for k in t.body.__dict__.keys(): | |||
for k in list(t.body.__dict__.keys()): | |||
if k[0] != "_": | |||
name = k | |||
p = structType(name) | |||
@@ -4,19 +4,19 @@ Delete when 1.0.0 is released! | |||
""" | |||
ident = '$Id: SOAP.py 541 2004-01-31 04:20:06Z warnes $' | |||
from version import __version__ | |||
from Client import * | |||
from Config import * | |||
from Errors import * | |||
from NS import * | |||
from Parser import * | |||
from SOAPBuilder import * | |||
from Server import * | |||
from Types import * | |||
from Utilities import * | |||
from .version import __version__ | |||
from .Client import * | |||
from .Config import * | |||
from .Errors import * | |||
from .NS import * | |||
from .Parser import * | |||
from .SOAPBuilder import * | |||
from .Server import * | |||
from .Types import * | |||
from .Utilities import * | |||
import wstools | |||
import WSDL | |||
from . import WSDL | |||
from warnings import warn | |||
@@ -34,15 +34,15 @@ | |||
""" | |||
ident = '$Id: SOAPBuilder.py 1498 2010-03-12 02:13:19Z pooryorick $' | |||
from version import __version__ | |||
from .version import __version__ | |||
import cgi | |||
from wstools.XMLname import toXMLname, fromXMLname | |||
# SOAPpy modules | |||
from Config import Config | |||
from NS import NS | |||
from Types import * | |||
from .Config import Config | |||
from .NS import NS | |||
from .Types import * | |||
# Test whether this Python version has Types.BooleanType | |||
# If it doesn't have it, then False and True are serialized as integers | |||
@@ -100,7 +100,7 @@ class SOAPBuilder: | |||
self.noroot = noroot | |||
def build(self): | |||
if self.config.debug: print "In build." | |||
if self.config.debug: print("In build.") | |||
ns_map = {} | |||
# Cache whether typing is on or not | |||
@@ -124,7 +124,7 @@ class SOAPBuilder: | |||
self.depth += 1 | |||
a = '' | |||
if self.methodattrs: | |||
for (k, v) in self.methodattrs.items(): | |||
for (k, v) in list(self.methodattrs.items()): | |||
a += ' %s="%s"' % (k, v) | |||
if self.namespace: # Use the namespace info handed to us | |||
@@ -144,11 +144,11 @@ class SOAPBuilder: | |||
for i in args: | |||
self.dump(i, typed = typed, ns_map = ns_map) | |||
if hasattr(self.config, "argsOrdering") and self.config.argsOrdering.has_key(self.method): | |||
if hasattr(self.config, "argsOrdering") and self.method in self.config.argsOrdering: | |||
for k in self.config.argsOrdering.get(self.method): | |||
self.dump(self.kw.get(k), k, typed = typed, ns_map = ns_map) | |||
else: | |||
for (k, v) in self.kw.items(): | |||
for (k, v) in list(self.kw.items()): | |||
self.dump(v, k, typed = typed, ns_map = ns_map) | |||
except RecursionError: | |||
@@ -182,8 +182,7 @@ class SOAPBuilder: | |||
self.depth -= 1 | |||
if self.envelope: | |||
e = map (lambda ns: ' xmlns:%s="%s"\n' % (ns[1], ns[0]), | |||
self.envns.items()) | |||
e = [' xmlns:%s="%s"\n' % (ns[1], ns[0]) for ns in list(self.envns.items())] | |||
self.out = ['<', self._env_top] + e + ['>\n'] + \ | |||
self.out + \ | |||
@@ -197,7 +196,7 @@ class SOAPBuilder: | |||
return ''.join(self.out) | |||
def gentag(self): | |||
if self.config.debug: print "In gentag." | |||
if self.config.debug: print("In gentag.") | |||
self.tcounter += 1 | |||
return "v%d" % self.tcounter | |||
@@ -213,10 +212,10 @@ class SOAPBuilder: | |||
else: | |||
ns = None | |||
if ns_map.has_key(nsURI): | |||
if nsURI in ns_map: | |||
return (ns_map[nsURI] + ':', '') | |||
if self._env_ns.has_key(nsURI): | |||
if nsURI in self._env_ns: | |||
ns = self.envns[nsURI] = ns_map[nsURI] = self._env_ns[nsURI] | |||
return (ns + ':', '') | |||
@@ -252,7 +251,7 @@ class SOAPBuilder: | |||
if self.depth < 2: | |||
return '' | |||
if not self.ids.has_key(id(obj)): | |||
if id(obj) not in self.ids: | |||
n = self.ids[id(obj)] = self.icounter | |||
self.icounter = n + 1 | |||
@@ -265,7 +264,7 @@ class SOAPBuilder: | |||
self.multirefs.append((obj, tag)) | |||
else: | |||
if self.use_refs == 0: | |||
raise RecursionError, "Cannot serialize recursive object" | |||
raise RecursionError("Cannot serialize recursive object") | |||
n = self.ids[id(obj)] | |||
@@ -279,12 +278,12 @@ class SOAPBuilder: | |||
# dumpers | |||
def dump(self, obj, tag = None, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump.", "obj=", obj | |||
if self.config.debug: print("In dump.", "obj=", obj) | |||
ns_map = ns_map.copy() | |||
self.depth += 1 | |||
if type(tag) not in (NoneType, StringType, UnicodeType): | |||
raise KeyError, "tag must be a string or None" | |||
raise KeyError("tag must be a string or None") | |||
self.dump_dispatch(obj, tag, typed, ns_map) | |||
self.depth -= 1 | |||
@@ -293,7 +292,7 @@ class SOAPBuilder: | |||
def dumper(self, nsURI, obj_type, obj, tag, typed = 1, ns_map = {}, | |||
rootattr = '', id = '', | |||
xml = '<%(tag)s%(type)s%(id)s%(attrs)s%(root)s>%(data)s</%(tag)s>\n'): | |||
if self.config.debug: print "In dumper." | |||
if self.config.debug: print("In dumper.") | |||
if nsURI == None: | |||
nsURI = self.config.typesNamespaceURI | |||
@@ -324,7 +323,7 @@ class SOAPBuilder: | |||
"id": id, "attrs": a} | |||
def dump_float(self, obj, tag, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump_float." | |||
if self.config.debug: print("In dump_float.") | |||
tag = tag or self.gentag() | |||
tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
@@ -346,7 +345,7 @@ class SOAPBuilder: | |||
None, "double", obj, tag, typed, ns_map, self.genroot(ns_map))) | |||
def dump_int(self, obj, tag, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump_int." | |||
if self.config.debug: print("In dump_int.") | |||
# fix error "Bad types (class java.math.BigInteger -> class java.lang.Integer)" | |||
if isinstance(obj, LongType): | |||
@@ -358,12 +357,12 @@ class SOAPBuilder: | |||
ns_map, self.genroot(ns_map))) | |||
def dump_bool(self, obj, tag, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump_bool." | |||
if self.config.debug: print("In dump_bool.") | |||
self.out.append(self.dumper(None, 'boolean', obj, tag, typed, | |||
ns_map, self.genroot(ns_map))) | |||
def dump_string(self, obj, tag, typed = 0, ns_map = {}): | |||
if self.config.debug: print "In dump_string." | |||
if self.config.debug: print("In dump_string.") | |||
tag = tag or self.gentag() | |||
tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
@@ -381,7 +380,7 @@ class SOAPBuilder: | |||
dump_unicode = dump_string | |||
def dump_None(self, obj, tag, typed = 0, ns_map = {}): | |||
if self.config.debug: print "In dump_None." | |||
if self.config.debug: print("In dump_None.") | |||
tag = tag or self.gentag() | |||
tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
ns = self.genns(ns_map, self.config.schemaNamespaceURI)[0] | |||
@@ -392,7 +391,7 @@ class SOAPBuilder: | |||
dump_NoneType = dump_None # For Python 2.2+ | |||
def dump_list(self, obj, tag, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump_list.", "obj=", obj | |||
if self.config.debug: print("In dump_list.", "obj=", obj) | |||
tag = tag or self.gentag() | |||
tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
@@ -512,7 +511,7 @@ class SOAPBuilder: | |||
dump_tuple = dump_list | |||
def dump_map(self, obj, tag, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump_map.", "obj=", obj | |||
if self.config.debug: print("In dump_map.", "obj=", obj) | |||
tag = tag or self.gentag() | |||
tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
@@ -566,7 +565,7 @@ class SOAPBuilder: | |||
self.out.append("</%sFault>\n" % vns) | |||
def dump_dictionary(self, obj, tag, typed = 1, ns_map = {}): | |||
if self.config.debug: print "In dump_dictionary." | |||
if self.config.debug: print("In dump_dictionary.") | |||
tag = tag or self.gentag() | |||
tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
@@ -580,7 +579,7 @@ class SOAPBuilder: | |||
self.out.append('<%s%s%s%s>\n' % | |||
(tag, id, a, self.genroot(ns_map))) | |||
for (k, v) in obj.items(): | |||
for (k, v) in list(obj.items()): | |||
if k[0] != "_": | |||
self.dump(v, k, 1, ns_map) | |||
@@ -607,11 +606,11 @@ class SOAPBuilder: | |||
(Exception, self.dump_exception), | |||
(mapType, self.dump_map), | |||
(arrayType, self.dump_list), | |||
(basestring, self.dump_string), | |||
(str, self.dump_string), | |||
(NoneType, self.dump_None), | |||
(bool, self.dump_bool), | |||
(int, self.dump_int), | |||
(long, self.dump_int), | |||
(int, self.dump_int), | |||
(list, self.dump_list), | |||
(tuple, self.dump_list), | |||
(dict, self.dump_dictionary), | |||
@@ -644,7 +643,7 @@ class SOAPBuilder: | |||
tag = ns + tag | |||
self.out.append("<%s%s%s%s%s>\n" % (tag, ndecl, id, a, r)) | |||
keylist = obj.__dict__.keys() | |||
keylist = list(obj.__dict__.keys()) | |||
# first write out items with order information | |||
if hasattr(obj, '_keyord'): | |||
@@ -688,7 +687,7 @@ class SOAPBuilder: | |||
if d1 is None and hasattr(obj, "__slots__"): | |||
d1 = dict(((k, getattr(obj, k)) for k in obj.__slots__)) | |||
if d1 is not None: | |||
for (k, v) in d1.items(): | |||
for (k, v) in list(d1.items()): | |||
if k[0] != "_": | |||
self.dump(v, k, 1, ns_map) | |||
@@ -40,33 +40,34 @@ | |||
################################################################################ | |||
""" | |||
from __future__ import nested_scopes | |||
ident = '$Id: Server.py 1468 2008-05-24 01:55:33Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
#import xml.sax | |||
import socket | |||
import sys | |||
import SocketServer | |||
from types import * | |||
import BaseHTTPServer | |||
import thread | |||
import socketserver | |||
from .types import * | |||
import http.server | |||
import _thread | |||
# SOAPpy modules | |||
from Parser import parseSOAPRPC | |||
from Config import Config | |||
from Types import faultType, voidType, simplify | |||
from NS import NS | |||
from SOAPBuilder import buildSOAP | |||
from Utilities import debugHeader, debugFooter | |||
from .Parser import parseSOAPRPC | |||
from .Config import Config | |||
from .Types import faultType, voidType, simplify | |||
from .NS import NS | |||
from .SOAPBuilder import buildSOAP | |||
from .Utilities import debugHeader, debugFooter | |||
import collections | |||
try: from M2Crypto import SSL | |||
except: pass | |||
ident = '$Id: Server.py 1468 2008-05-24 01:55:33Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
################################################################################ | |||
# Call context dictionary | |||
@@ -76,7 +77,7 @@ _contexts = dict() | |||
def GetSOAPContext(): | |||
global _contexts | |||
return _contexts[thread.get_ident()] | |||
return _contexts[_thread.get_ident()] | |||
################################################################################ | |||
# Server | |||
@@ -93,7 +94,7 @@ class MethodSig: | |||
self.__name__ = func.__name__ | |||
def __call__(self, *args, **kw): | |||
return apply(self.func,args,kw) | |||
return self.func(*args, **kw) | |||
class SOAPContext: | |||
def __init__(self, header, body, attrs, xmldata, connection, httpheaders, | |||
@@ -111,7 +112,7 @@ class SOAPContext: | |||
class HeaderHandler: | |||
# Initially fail out if there are any problems. | |||
def __init__(self, header, attrs): | |||
for i in header.__dict__.keys(): | |||
for i in list(header.__dict__.keys()): | |||
if i[0] == "_": | |||
continue | |||
@@ -123,7 +124,7 @@ class HeaderHandler: | |||
fault = 0 | |||
if fault: | |||
raise faultType, ("%s:MustUnderstand" % NS.ENV_T, | |||
raise faultType("%s:MustUnderstand" % NS.ENV_T, | |||
"Required Header Misunderstood", | |||
"%s" % i) | |||
@@ -133,13 +134,13 @@ class HeaderHandler: | |||
class SOAPServerBase: | |||
def get_request(self): | |||
sock, addr = SocketServer.TCPServer.get_request(self) | |||
sock, addr = socketserver.TCPServer.get_request(self) | |||
if self.ssl_context: | |||
sock = SSL.Connection(self.ssl_context, sock) | |||
sock._setup_ssl(addr) | |||
if sock.accept_ssl() != 1: | |||
raise socket.error, "Couldn't accept SSL connection" | |||
raise socket.error("Couldn't accept SSL connection") | |||
return sock, addr | |||
@@ -157,7 +158,7 @@ class SOAPServerBase: | |||
if namespace == '' and path != '': | |||
namespace = path.replace("/", ":") | |||
if namespace[0] == ":": namespace = namespace[1:] | |||
if self.funcmap.has_key(namespace): | |||
if namespace in self.funcmap: | |||
self.funcmap[namespace][funcName] = function | |||
else: | |||
self.funcmap[namespace] = {funcName : function} | |||
@@ -168,7 +169,7 @@ class SOAPServerBase: | |||
namespace = path.replace("/", ":") | |||
if namespace[0] == ":": namespace = namespace[1:] | |||
for i in dir(object.__class__): | |||
if i[0] != "_" and callable(getattr(object, i)): | |||
if i[0] != "_" and isinstance(getattr(object, i), collections.Callable): | |||
self.registerKWFunction(getattr(object,i), namespace) | |||
# convenience - wraps your func for you. | |||
@@ -189,7 +190,7 @@ class SOAPServerBase: | |||
del self.objmap[namespace] | |||
class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
class SOAPRequestHandler(http.server.BaseHTTPRequestHandler): | |||
ignore_ext = True | |||
def version_string(self): | |||
return '<a href="http://pywebsvcs.sf.net">' + \ | |||
@@ -198,7 +199,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
def date_time_string(self): | |||
self.__last_date_time_string = \ | |||
BaseHTTPServer.BaseHTTPRequestHandler.\ | |||
http.server.BaseHTTPRequestHandler.\ | |||
date_time_string(self) | |||
return self.__last_date_time_string | |||
@@ -211,9 +212,8 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
if self.server.config.dumpHeadersIn: | |||
s = 'Incoming HTTP headers' | |||
debugHeader(s) | |||
print self.raw_requestline.strip() | |||
print "\n".join(map (lambda x: x.strip(), | |||
self.headers.headers)) | |||
print(self.raw_requestline.strip()) | |||
print("\n".join([x.strip() for x in self.headers.headers])) | |||
debugFooter(s) | |||
data = self.rfile.read(int(self.headers["Content-length"])) | |||
@@ -221,9 +221,9 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
if self.server.config.dumpSOAPIn: | |||
s = 'Incoming SOAP' | |||
debugHeader(s) | |||
print data, | |||
print(data, end=' ') | |||
if data[-1] != '\n': | |||
print() | |||
debugFooter(s) | |||
(r, header, body, attrs) = \ | |||
@@ -255,7 +255,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
if self.server.config.specialArgs: | |||
for (k,v) in kw.items(): | |||
for (k,v) in list(kw.items()): | |||
if k[0]=="v": | |||
try: | |||
@@ -282,11 +282,11 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
# authorization method | |||
a = None | |||
keylist = ordered_args.keys() | |||
keylist = list(ordered_args.keys()) | |||
keylist.sort() | |||
# create list in proper order w/o names | |||
tmp = map( lambda x: ordered_args[x], keylist) | |||
tmp = [ordered_args[x] for x in keylist] | |||
ordered_args = tmp | |||
#print '<-> Argument Matching Yielded:' | |||
@@ -303,15 +303,15 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
try: | |||
# First look for registered functions | |||
if self.server.funcmap.has_key(ns) and \ | |||
self.server.funcmap[ns].has_key(method): | |||
if ns in self.server.funcmap and \ | |||
method in self.server.funcmap[ns]: | |||
f = self.server.funcmap[ns][method] | |||
# look for the authorization method | |||
if self.server.config.authMethod != None: | |||
authmethod = self.server.config.authMethod | |||
if self.server.funcmap.has_key(ns) and \ | |||
self.server.funcmap[ns].has_key(authmethod): | |||
if ns in self.server.funcmap and \ | |||
authmethod in self.server.funcmap[ns]: | |||
a = self.server.funcmap[ns][authmethod] | |||
else: | |||
# Now look at registered objects | |||
@@ -357,11 +357,11 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
# and it won't be necessary here | |||
# for now we're doing both | |||
if "SOAPAction".lower() not in self.headers.keys() or \ | |||
if "SOAPAction".lower() not in list(self.headers.keys()) or \ | |||
self.headers["SOAPAction"] == "\"\"": | |||
self.headers["SOAPAction"] = method | |||
thread_id = thread.get_ident() | |||
thread_id = _thread.get_ident() | |||
_contexts[thread_id] = SOAPContext(header, body, | |||
attrs, data, | |||
self.connection, | |||
@@ -370,7 +370,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
# Do an authorization check | |||
if a != None: | |||
if not apply(a, (), {"_SOAPContext" : | |||
if not a(*(), **{"_SOAPContext" : | |||
_contexts[thread_id] }): | |||
raise faultType("%s:Server" % NS.ENV_T, | |||
"Authorization failed.", | |||
@@ -386,28 +386,28 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
if self.server.config.specialArgs: | |||
if c: | |||
named_args["_SOAPContext"] = c | |||
fr = apply(f, ordered_args, named_args) | |||
fr = f(*ordered_args, **named_args) | |||
elif f.keywords: | |||
# This is lame, but have to de-unicode | |||
# keywords | |||
strkw = {} | |||
for (k, v) in kw.items(): | |||
for (k, v) in list(kw.items()): | |||
strkw[str(k)] = v | |||
if c: | |||
strkw["_SOAPContext"] = c | |||
fr = apply(f, (), strkw) | |||
fr = f(*(), **strkw) | |||
elif c: | |||
fr = apply(f, args, {'_SOAPContext':c}) | |||
fr = f(*args, **{'_SOAPContext':c}) | |||
else: | |||
fr = apply(f, args, {}) | |||
fr = f(*args, **{}) | |||
else: | |||
if self.server.config.specialArgs: | |||
fr = apply(f, ordered_args, named_args) | |||
fr = f(*ordered_args, **named_args) | |||
else: | |||
fr = apply(f, args, {}) | |||
fr = f(*args, **{}) | |||
if type(fr) == type(self) and \ | |||
@@ -422,10 +422,10 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
config = self.server.config) | |||
# Clean up _contexts | |||
if _contexts.has_key(thread_id): | |||
if thread_id in _contexts: | |||
del _contexts[thread_id] | |||
except Exception, e: | |||
except Exception as e: | |||
import traceback | |||
info = sys.exc_info() | |||
@@ -457,7 +457,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
status = 500 | |||
else: | |||
status = 200 | |||
except faultType, e: | |||
except faultType as e: | |||
import traceback | |||
info = sys.exc_info() | |||
try: | |||
@@ -479,7 +479,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
resp = buildSOAP(e, encoding = self.server.encoding, | |||
config = self.server.config) | |||
status = 500 | |||
except Exception, e: | |||
except Exception as e: | |||
# internal error, report as HTTP server error | |||
if self.server.config.dumpFaultInfo: | |||
@@ -501,13 +501,13 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
self.request_version != 'HTTP/0.9': | |||
s = 'Outgoing HTTP headers' | |||
debugHeader(s) | |||
if self.responses.has_key(status): | |||
if status in self.responses: | |||
s = ' ' + self.responses[status][0] | |||
else: | |||
s = '' | |||
print "%s %d%s" % (self.protocol_version, 500, s) | |||
print "Server:", self.version_string() | |||
print "Date:", self.__last_date_time_string | |||
print("%s %d%s" % (self.protocol_version, 500, s)) | |||
print("Server:", self.version_string()) | |||
print("Date:", self.__last_date_time_string) | |||
debugFooter(s) | |||
else: | |||
# got a valid SOAP response | |||
@@ -524,23 +524,23 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
self.request_version != 'HTTP/0.9': | |||
s = 'Outgoing HTTP headers' | |||
debugHeader(s) | |||
if self.responses.has_key(status): | |||
if status in self.responses: | |||
s = ' ' + self.responses[status][0] | |||
else: | |||
s = '' | |||
print "%s %d%s" % (self.protocol_version, status, s) | |||
print "Server:", self.version_string() | |||
print "Date:", self.__last_date_time_string | |||
print "Content-type:", t | |||
print "Content-length:", len(resp) | |||
print("%s %d%s" % (self.protocol_version, status, s)) | |||
print("Server:", self.version_string()) | |||
print("Date:", self.__last_date_time_string) | |||
print("Content-type:", t) | |||
print("Content-length:", len(resp)) | |||
debugFooter(s) | |||
if self.server.config.dumpSOAPOut: | |||
s = 'Outgoing SOAP' | |||
debugHeader(s) | |||
print resp, | |||
print(resp, end=' ') | |||
if resp[-1] != '\n': | |||
print() | |||
debugFooter(s) | |||
self.wfile.write(resp) | |||
@@ -573,11 +573,11 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
if path.endswith('wsdl'): | |||
method = 'wsdl' | |||
function = namespace = None | |||
if self.server.funcmap.has_key(namespace) \ | |||
and self.server.funcmap[namespace].has_key(method): | |||
if namespace in self.server.funcmap \ | |||
and method in self.server.funcmap[namespace]: | |||
function = self.server.funcmap[namespace][method] | |||
else: | |||
if namespace in self.server.objmap.keys(): | |||
if namespace in list(self.server.objmap.keys()): | |||
function = self.server.objmap[namespace] | |||
l = method.split(".") | |||
for i in l: | |||
@@ -587,7 +587,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
self.send_response(200) | |||
self.send_header("Content-type", 'text/plain') | |||
self.end_headers() | |||
response = apply(function, ()) | |||
response = function(*()) | |||
self.wfile.write(str(response)) | |||
return | |||
@@ -618,16 +618,16 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
def log_message(self, format, *args): | |||
if self.server.log: | |||
BaseHTTPServer.BaseHTTPRequestHandler.\ | |||
http.server.BaseHTTPRequestHandler.\ | |||
log_message (self, format, *args) | |||
class SOAPInsecureRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
class SOAPInsecureRequestHandler(http.server.BaseHTTPRequestHandler): | |||
'''Request handler that does load POSTed doctypes''' | |||
ignore_ext = False | |||
class SOAPServer(SOAPServerBase, SocketServer.TCPServer): | |||
class SOAPServer(SOAPServerBase, socketserver.TCPServer): | |||
def __init__(self, addr = ('localhost', 8000), | |||
RequestHandler = SOAPRequestHandler, log = 0, encoding = 'UTF-8', | |||
@@ -638,8 +638,7 @@ class SOAPServer(SOAPServerBase, SocketServer.TCPServer): | |||
''.encode(encoding) | |||
if ssl_context != None and not config.SSLserver: | |||
raise AttributeError, \ | |||
"SSL server not supported by this Python installation" | |||
raise AttributeError("SSL server not supported by this Python installation") | |||
self.namespace = namespace | |||
self.objmap = {} | |||
@@ -651,10 +650,10 @@ class SOAPServer(SOAPServerBase, SocketServer.TCPServer): | |||
self.allow_reuse_address= 1 | |||
SocketServer.TCPServer.__init__(self, addr, RequestHandler) | |||
socketserver.TCPServer.__init__(self, addr, RequestHandler) | |||
class ThreadingSOAPServer(SOAPServerBase, SocketServer.ThreadingTCPServer): | |||
class ThreadingSOAPServer(SOAPServerBase, socketserver.ThreadingTCPServer): | |||
def __init__(self, addr = ('localhost', 8000), | |||
RequestHandler = SOAPRequestHandler, log = 0, encoding = 'UTF-8', | |||
@@ -665,8 +664,7 @@ class ThreadingSOAPServer(SOAPServerBase, SocketServer.ThreadingTCPServer): | |||
''.encode(encoding) | |||
if ssl_context != None and not config.SSLserver: | |||
raise AttributeError, \ | |||
"SSL server not supported by this Python installation" | |||
raise AttributeError("SSL server not supported by this Python installation") | |||
self.namespace = namespace | |||
self.objmap = {} | |||
@@ -678,12 +676,12 @@ class ThreadingSOAPServer(SOAPServerBase, SocketServer.ThreadingTCPServer): | |||
self.allow_reuse_address= 1 | |||
SocketServer.ThreadingTCPServer.__init__(self, addr, RequestHandler) | |||
socketserver.ThreadingTCPServer.__init__(self, addr, RequestHandler) | |||
# only define class if Unix domain sockets are available | |||
if hasattr(socket, "AF_UNIX"): | |||
class SOAPUnixSocketServer(SOAPServerBase, SocketServer.UnixStreamServer): | |||
class SOAPUnixSocketServer(SOAPServerBase, socketserver.UnixStreamServer): | |||
def __init__(self, addr = 8000, | |||
RequestHandler = SOAPRequestHandler, log = 0, encoding = 'UTF-8', | |||
@@ -694,8 +692,7 @@ if hasattr(socket, "AF_UNIX"): | |||
''.encode(encoding) | |||
if ssl_context != None and not config.SSLserver: | |||
raise AttributeError, \ | |||
"SSL server not supported by this Python installation" | |||
raise AttributeError("SSL server not supported by this Python installation") | |||
self.namespace = namespace | |||
self.objmap = {} | |||
@@ -707,7 +704,7 @@ if hasattr(socket, "AF_UNIX"): | |||
self.allow_reuse_address= 1 | |||
SocketServer.UnixStreamServer.__init__(self, str(addr), RequestHandler) | |||
socketserver.UnixStreamServer.__init__(self, str(addr), RequestHandler) | |||
@@ -2,10 +2,10 @@ | |||
authentication""" | |||
ident = '$Id: URLopener.py 541 2004-01-31 04:20:06Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
from Config import Config | |||
from urllib import FancyURLopener | |||
from .Config import Config | |||
from urllib.request import FancyURLopener | |||
class URLopener(FancyURLopener): | |||
@@ -34,15 +34,15 @@ | |||
""" | |||
ident = '$Id: Utilities.py 1298 2006-11-07 00:54:15Z sanxiyn $' | |||
from version import __version__ | |||
from .version import __version__ | |||
import re | |||
import string | |||
import sys | |||
from types import * | |||
from .types import * | |||
# SOAPpy modules | |||
from Errors import * | |||
from .Errors import * | |||
################################################################################ | |||
# Utility infielders | |||
@@ -84,8 +84,7 @@ def decodeHexString(data): | |||
try: | |||
c = conv[c] | |||
except KeyError: | |||
raise ValueError, \ | |||
"invalid hex string character `%s'" % c | |||
raise ValueError("invalid hex string character `%s'" % c) | |||
if low: | |||
bin += chr(high * 16 + c) | |||
@@ -97,12 +96,11 @@ def decodeHexString(data): | |||
i += 1 | |||
if low: | |||
raise ValueError, "invalid hex string length" | |||
raise ValueError("invalid hex string length") | |||
while i < len(data): | |||
if data[i] not in string.whitespace: | |||
raise ValueError, \ | |||
"invalid hex string character `%s'" % c | |||
raise ValueError("invalid hex string character `%s'" % c) | |||
i += 1 | |||
@@ -127,7 +125,7 @@ def cleanDate(d, first = 0): | |||
names = ('year', 'month', 'day', 'hours', 'minutes', 'seconds') | |||
if len(d) != 6: | |||
raise ValueError, "date must have 6 elements" | |||
raise ValueError("date must have 6 elements") | |||
for i in range(first, 6): | |||
s = d[i] | |||
@@ -139,38 +137,38 @@ def cleanDate(d, first = 0): | |||
except OverflowError: | |||
if i > 0: | |||
raise | |||
s = long(s) | |||
s = int(s) | |||
if s != d[i]: | |||
raise ValueError, "%s must be integral" % names[i] | |||
raise ValueError("%s must be integral" % names[i]) | |||
d[i] = s | |||
elif type(s) == LongType: | |||
try: s = int(s) | |||
except: pass | |||
elif type(s) != IntType: | |||
raise TypeError, "%s isn't a valid type" % names[i] | |||
raise TypeError("%s isn't a valid type" % names[i]) | |||
if i == first and s < 0: | |||
continue | |||
if ranges[i] != None and \ | |||
(s < ranges[i][0] or ranges[i][1] < s): | |||
raise ValueError, "%s out of range" % names[i] | |||
raise ValueError("%s out of range" % names[i]) | |||
if first < 6 and d[5] >= 61: | |||
raise ValueError, "seconds out of range" | |||
raise ValueError("seconds out of range") | |||
if first < 2: | |||
leap = first < 1 and leapMonth(d[0], d[1]) | |||
if d[2] > months[d[1]] + leap: | |||
raise ValueError, "day out of range" | |||
raise ValueError("day out of range") | |||
def debugHeader(title): | |||
s = '*** ' + title + ' ' | |||
print s + ('*' * (72 - len(s))) | |||
print(s + ('*' * (72 - len(s)))) | |||
def debugFooter(title): | |||
print '*' * 72 | |||
print('*' * 72) | |||
sys.stdout.flush() |
@@ -3,14 +3,14 @@ | |||
Rudimentary support.""" | |||
ident = '$Id: WSDL.py 1467 2008-05-16 23:32:51Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
import wstools | |||
import xml | |||
from Errors import Error | |||
from Client import SOAPProxy, SOAPAddress | |||
from Config import Config | |||
import urllib | |||
from .Errors import Error | |||
from .Client import SOAPProxy, SOAPAddress | |||
from .Config import Config | |||
import urllib.request, urllib.parse, urllib.error | |||
class Proxy: | |||
"""WSDL Proxy. | |||
@@ -41,14 +41,14 @@ class Proxy: | |||
# From Mark Pilgrim's "Dive Into Python" toolkit.py--open anything. | |||
if self.wsdl is None and hasattr(wsdlsource, "read"): | |||
print 'stream:', wsdlsource | |||
print('stream:', wsdlsource) | |||
try: | |||
self.wsdl = reader.loadFromStream(wsdlsource) | |||
except xml.parsers.expat.ExpatError, e: | |||
newstream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
except xml.parsers.expat.ExpatError as e: | |||
newstream = urllib.request.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
buf = newstream.readlines() | |||
raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf)) | |||
raise Error("Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf))) | |||
# NOT TESTED (as of April 17, 2003) | |||
@@ -63,25 +63,25 @@ class Proxy: | |||
self.wsdl = reader.loadFromFile(wsdlsource) | |||
#print 'file' | |||
except (IOError, OSError): pass | |||
except xml.parsers.expat.ExpatError, e: | |||
newstream = urllib.urlopen(wsdlsource) | |||
except xml.parsers.expat.ExpatError as e: | |||
newstream = urllib.request.urlopen(wsdlsource) | |||
buf = newstream.readlines() | |||
raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf)) | |||
raise Error("Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf))) | |||
if self.wsdl is None: | |||
try: | |||
stream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
stream = urllib.request.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
self.wsdl = reader.loadFromStream(stream, wsdlsource) | |||
except (IOError, OSError): pass | |||
except xml.parsers.expat.ExpatError, e: | |||
newstream = urllib.urlopen(wsdlsource) | |||
except xml.parsers.expat.ExpatError as e: | |||
newstream = urllib.request.urlopen(wsdlsource) | |||
buf = newstream.readlines() | |||
raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf)) | |||
raise Error("Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf))) | |||
if self.wsdl is None: | |||
import StringIO | |||
import io | |||
self.wsdl = reader.loadFromString(str(wsdlsource)) | |||
#print 'string' | |||
@@ -102,7 +102,7 @@ class Proxy: | |||
def __str__(self): | |||
s = '' | |||
for method in self.methods.values(): | |||
for method in list(self.methods.values()): | |||
s += str(method) | |||
return s | |||
@@ -111,7 +111,7 @@ class Proxy: | |||
Raises AttributeError is method name is not found.""" | |||
if not self.methods.has_key(name): raise AttributeError, name | |||
if name not in self.methods: raise AttributeError(name) | |||
callinfo = self.methods[name] | |||
self.soapproxy.proxy = SOAPAddress(callinfo.location) | |||
@@ -120,18 +120,18 @@ class Proxy: | |||
return self.soapproxy.__getattr__(name) | |||
def show_methods(self): | |||
for key in self.methods.keys(): | |||
for key in list(self.methods.keys()): | |||
method = self.methods[key] | |||
print "Method Name:", key.ljust(15) | |||
print("Method Name:", key.ljust(15)) | |||
print() | |||
inps = method.inparams | |||
for parm in range(len(inps)): | |||
details = inps[parm] | |||
print " In #%d: %s (%s)" % (parm, details.name, details.type) | |||
print(" In #%d: %s (%s)" % (parm, details.name, details.type)) | |||
print() | |||
outps = method.outparams | |||
for parm in range(len(outps)): | |||
details = outps[parm] | |||
print " Out #%d: %s (%s)" % (parm, details.name, details.type) | |||
print(" Out #%d: %s (%s)" % (parm, details.name, details.type)) | |||
print() | |||
@@ -1,15 +1,15 @@ | |||
ident = '$Id: __init__.py 541 2004-01-31 04:20:06Z warnes $' | |||
from version import __version__ | |||
from .version import __version__ | |||
from Client import * | |||
from Config import * | |||
from Errors import * | |||
from NS import * | |||
from Parser import * | |||
from SOAPBuilder import * | |||
from Server import * | |||
from Types import * | |||
from Utilities import * | |||
from .Client import * | |||
from .Config import * | |||
from .Errors import * | |||
from .NS import * | |||
from .Parser import * | |||
from .SOAPBuilder import * | |||
from .Server import * | |||
from .Types import * | |||
from .Utilities import * | |||
import wstools | |||
import WSDL | |||
from . import WSDL |
@@ -21,12 +21,12 @@ server = WSDL.Proxy('http://www.xmethods.net/sd/2001/BabelFishService.wsdl', | |||
english = "Hi Friend!" | |||
print "Babelfish Translations" | |||
print "------------------------" | |||
print "English: '%s'" % english | |||
print "French: '%s'" % server.BabelFish('en_fr',english) | |||
print "Spanish: '%s'" % server.BabelFish('en_es',english) | |||
print "Italian: '%s'" % server.BabelFish('en_it',english) | |||
print "German: '%s'" % server.BabelFish('en_de',english) | |||
print "Done." | |||
print("Babelfish Translations") | |||
print("------------------------") | |||
print("English: '%s'" % english) | |||
print("French: '%s'" % server.BabelFish('en_fr',english)) | |||
print("Spanish: '%s'" % server.BabelFish('en_es',english)) | |||
print("Italian: '%s'" % server.BabelFish('en_it',english)) | |||
print("German: '%s'" % server.BabelFish('en_de',english)) | |||
print("Done.") |
@@ -57,19 +57,19 @@ kw2 = retval[1][1] | |||
assert(retval[0] == adgroupid) | |||
for key in kw1.keys(): | |||
for key in list(kw1.keys()): | |||
assert(kw1[key]==keyword1[key]) | |||
for key in kw2.keys(): | |||
for key in list(kw2.keys()): | |||
assert(kw2[key]==keyword2[key]) | |||
# Check that the header is preserved | |||
retval = server.echo_header((adgroupid, keylist)) | |||
assert(retval[1].has_key('useragent')) | |||
assert('useragent' in retval[1]) | |||
assert(retval[1]['useragent'] == 'foo') | |||
server.quit() | |||
print "Success!" | |||
print("Success!") | |||
@@ -20,24 +20,24 @@ Config.simplify_objects = 0 | |||
server = SOAPProxy("http://localhost:9900/") | |||
x = u'uMOO' # Single unicode string | |||
x = 'uMOO' # Single unicode string | |||
y = server.echo_simple((x,)) | |||
assert( x==y[0] ) | |||
x = [u'uMoo1',u'uMoo2'] # array of unicode strings | |||
x = ['uMoo1','uMoo2'] # array of unicode strings | |||
y = server.echo_simple(x) | |||
assert( x[0] == y[0] ) | |||
assert( x[1] == y[1] ) | |||
x = { | |||
u'A':1, | |||
u'B':u'B', | |||
'C':u'C', | |||
'A':1, | |||
'B':'B', | |||
'C':'C', | |||
'D':'D' | |||
} | |||
y = server.echo_simple(x) | |||
for key in x.keys(): | |||
for key in list(x.keys()): | |||
assert( x[key] == y[0][key] ) | |||
print "Success" | |||
print("Success") |
@@ -35,4 +35,4 @@ z = parseSOAPRPC(detailed_fault.strip() ) | |||
assert(z.__class__==faultType) | |||
assert(z.faultstring=="Exception thrown on Server") | |||
assert(z.detail.loginFailureFault.description=='Login failure (504):Unknown User') | |||
print "Success" | |||
print("Success") |
@@ -8,4 +8,4 @@ results = server.doGoogleSearch(key, 'warnes', 0, 10, False, "", | |||
for i in range(len(results.resultElements)): | |||
res = results.resultElements[i] | |||
print '%d: %s --> %s' % ( i, res.title, res.URL ) | |||
print('%d: %s --> %s' % ( i, res.title, res.URL )) |
@@ -4,5 +4,5 @@ from SOAPpy import * | |||
one = typedArrayType(data=[1],typed=type(1)) | |||
tmp = typedArrayType(data=[], typed=type(1)) | |||
print buildSOAP( one ) | |||
print buildSOAP( tmp ) | |||
print(buildSOAP( one )) | |||
print(buildSOAP( tmp )) |
@@ -31,4 +31,4 @@ server = SOAPProxy(SoapEndpointURL, | |||
) | |||
for category in server.GetCategories(): | |||
print category | |||
print(category) |
@@ -16,15 +16,15 @@ ns = "http://soapinterop.org/" | |||
serv = SOAPProxy(endpoint, namespace=ns, soapaction=sa) | |||
try: hand = serv.dealHand(NumberOfCards = 13, StringSeparator = '\n') | |||
except: print "no dealHand"; hand = 0 | |||
except: print("no dealHand"); hand = 0 | |||
try: sortedhand = serv.dealArrangedHand(NumberOfCards=13,StringSeparator='\n') | |||
except: print "no sorted"; sortedhand = 0 | |||
except: print("no sorted"); sortedhand = 0 | |||
try: card = serv.dealCard() | |||
except: print "no card"; card = 0 | |||
except: print("no card"); card = 0 | |||
print "*****hand****\n",hand,"\n*********" | |||
print "******sortedhand*****\n",sortedhand,"\n*********" | |||
print "card:",card | |||
print("*****hand****\n",hand,"\n*********") | |||
print("******sortedhand*****\n",sortedhand,"\n*********") | |||
print("card:",card) | |||
serv.quit() | |||
@@ -26,7 +26,7 @@ for suit in [__cs, __ds, __hs, __ss]: | |||
def deal(num): | |||
if num not in range(1,53): | |||
if num not in list(range(1,53)): | |||
return -1 | |||
else: | |||
alreadydealt = [] | |||
@@ -82,7 +82,7 @@ def dealHand (NumberOfCards, StringSeparator): | |||
def dealArrangedHand (NumberOfCards, StringSeparator): | |||
if NumberOfCards < 1 or NumberOfCards > 52: | |||
raise ValueError, "NumberOfCards must be between 1 and 52" | |||
raise ValueError("NumberOfCards must be between 1 and 52") | |||
unarranged = deal(NumberOfCards) | |||
hand = arrangeHand(unarranged) | |||
return string.join(hand, StringSeparator) | |||
@@ -38,65 +38,65 @@ else: | |||
# Echo... | |||
try: | |||
print server.echo("MOO") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(server.echo("MOO")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
try: | |||
print pathserver.echo("MOO") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(pathserver.echo("MOO")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
# ...in an object | |||
try: | |||
print server.echo_ino("moo") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(server.echo_ino("moo")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
try: | |||
print pathserver.echo_ino("cow") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(pathserver.echo_ino("cow")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
# ...in an object in an object | |||
try: | |||
print server.prop.echo2("moo") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(server.prop.echo2("moo")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
try: | |||
print pathserver.prop.echo2("cow") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(pathserver.prop.echo2("cow")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
# ...with keyword arguments | |||
try: | |||
print server.echo_wkw(third = "three", first = "one", second = "two") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(server.echo_wkw(third = "three", first = "one", second = "two")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
try: | |||
print pathserver.echo_wkw(third = "three", first = "one", second = "two") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(pathserver.echo_wkw(third = "three", first = "one", second = "two")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
# ...with a context object | |||
try: | |||
print server.echo_wc("moo") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(server.echo_wc("moo")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
try: | |||
print pathserver.echo_wc("cow") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(pathserver.echo_wc("cow")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
# ...with a header | |||
hd = headerType(data = {"mystring": "Hello World"}) | |||
try: | |||
print server._hd(hd).echo_wc("moo") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(server._hd(hd).echo_wc("moo")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
try: | |||
print pathserver._hd(hd).echo_wc("cow") | |||
except Exception, e: | |||
print "Caught exception: ", e | |||
print(pathserver._hd(hd).echo_wc("cow")) | |||
except Exception as e: | |||
print("Caught exception: ", e) | |||
# close down server | |||
server.quit() |
@@ -18,6 +18,6 @@ Config.BuildWithNoNamespacePrefix = 1 | |||
hd = headerType(data = {"mystring": "Hello World"}) | |||
server = SOAPProxy("http://localhost:9900/", header=hd) | |||
print server.echo("Hello world") | |||
print(server.echo("Hello world")) | |||
server.quit() |
@@ -36,8 +36,8 @@ def _authorize(*args, **kw): | |||
global allowAll, Config | |||
if Config.debug: | |||
print "Authorize (function) called! (result = %d)" % allowAll | |||
print "Arguments: %s" % kw | |||
print("Authorize (function) called! (result = %d)" % allowAll) | |||
print("Arguments: %s" % kw) | |||
if allowAll: | |||
return 1 | |||
@@ -51,7 +51,7 @@ def echo(s): | |||
# Test of context retrieval | |||
ctx = Server.GetSOAPContext() | |||
if Config.debug: | |||
print "SOAP Context: ", ctx | |||
print("SOAP Context: ", ctx) | |||
return s + s | |||
@@ -71,10 +71,10 @@ class echoBuilder: | |||
global allowAll, Config | |||
if Config.debug: | |||
print "Authorize (method) called with arguments:" | |||
print "*args=%s" % str(args) | |||
print "**kw =%s" % str(kw) | |||
print "Approved -> %d" % allowAll | |||
print("Authorize (method) called with arguments:") | |||
print("*args=%s" % str(args)) | |||
print("**kw =%s" % str(kw)) | |||
print("Approved -> %d" % allowAll) | |||
if allowAll: | |||
return 1 | |||
@@ -91,40 +91,40 @@ def echo_wc(s, _SOAPContext): | |||
# The Context object has extra info about the call | |||
if Config.debug: | |||
print "-- XML", sep[7:] | |||
print("-- XML", sep[7:]) | |||
# The original XML request | |||
print c.xmldata | |||
print(c.xmldata) | |||
print "-- Header", sep[10:] | |||
print("-- Header", sep[10:]) | |||
# The SOAP Header or None if not present | |||
print c.header | |||
print(c.header) | |||
if c.header: | |||
print "-- Header.mystring", sep[19:] | |||
print("-- Header.mystring", sep[19:]) | |||
# An element of the SOAP Header | |||
print c.header.mystring | |||
print(c.header.mystring) | |||
print "-- Body", sep[8:] | |||
print("-- Body", sep[8:]) | |||
# The whole Body object | |||
print c.body | |||
print(c.body) | |||
print "-- Peer", sep[8:] | |||
print("-- Peer", sep[8:]) | |||
if not GSI: | |||
# The socket object, useful for | |||
print c.connection.getpeername() | |||
print(c.connection.getpeername()) | |||
else: | |||
# The socket object, useful for | |||
print c.connection.get_remote_address() | |||
print(c.connection.get_remote_address()) | |||
ctx = c.connection.get_security_context() | |||
print ctx.inquire()[0].display() | |||
print(ctx.inquire()[0].display()) | |||
print "-- SOAPAction", sep[14:] | |||
print("-- SOAPAction", sep[14:]) | |||
# The SOAPaction HTTP header | |||
print c.soapaction | |||
print(c.soapaction) | |||
print "-- HTTP headers", sep[16:] | |||
print("-- HTTP headers", sep[16:]) | |||
# All the HTTP headers | |||
print c.httpheaders | |||
print(c.httpheaders) | |||
return s + s | |||
@@ -149,8 +149,7 @@ SSL = 0 | |||
if len(sys.argv) > 1 and sys.argv[1] == '-s': | |||
SSL = 1 | |||
if not Config.SSLserver: | |||
raise RuntimeError, \ | |||
"this Python installation doesn't have OpenSSL and M2Crypto" | |||
raise RuntimeError("this Python installation doesn't have OpenSSL and M2Crypto") | |||
ssl_context = SSL.Context() | |||
ssl_context.load_cert('validate/server.pem') | |||
server = SOAPServer(addr, ssl_context = ssl_context) | |||
@@ -164,7 +163,7 @@ else: | |||
server = SOAPServer(addr) | |||
prefix = 'http' | |||
print "Server listening at: %s://%s:%d/" % (prefix, addr[0], addr[1]) | |||
print("Server listening at: %s://%s:%d/" % (prefix, addr[0], addr[1])) | |||
# register the method | |||
server.registerFunction(echo) | |||
@@ -22,38 +22,38 @@ if __name__ == "__main__": | |||
original_integer = 5 | |||
result_integer = server.test_integer(original_integer) | |||
print "original_integer %s" % original_integer | |||
print "result_integer %s" % result_integer | |||
print("original_integer %s" % original_integer) | |||
print("result_integer %s" % result_integer) | |||
assert(result_integer==original_integer) | |||
print() | |||
original_string = "five" | |||
result_string = server.test_string(original_string) | |||
print "original_string %s" % original_string | |||
print "result_string %s" % result_string | |||
print("original_string %s" % original_string) | |||
print("result_string %s" % result_string) | |||
assert(result_string==original_string) | |||
print() | |||
original_float = 5.0 | |||
result_float = server.test_float(original_float) | |||
print "original_float %s" % original_float | |||
print "result_float %s" % result_float | |||
print("original_float %s" % original_float) | |||
print("result_float %s" % result_float) | |||
assert(result_float==original_float) | |||
print() | |||
original_tuple = (1,2,"three","four",5) | |||
result_tuple = server.test_tuple(original_tuple) | |||
print "original_tuple %s" % str(original_tuple) | |||
print "result_tuple %s" % str(result_tuple) | |||
print("original_tuple %s" % str(original_tuple)) | |||
print("result_tuple %s" % str(result_tuple)) | |||
assert(tuple(result_tuple)==original_tuple) | |||
print() | |||
original_list = [5,4,"three",2,1] | |||
result_list = server.test_list(original_list) | |||
print "original_list %s" % original_list | |||
print "result_list %s" % result_list | |||
print("original_list %s" % original_list) | |||
print("result_list %s" % result_list) | |||
assert(result_list==original_list) | |||
print() | |||
original_dictionary = { | |||
'one': 1, | |||
@@ -63,9 +63,9 @@ if __name__ == "__main__": | |||
"five": 5, | |||
} | |||
result_dictionary = server.test_dictionary(original_dictionary) | |||
print "original_dictionary %s" % original_dictionary | |||
print "result_dictionary %s" % result_dictionary | |||
print("original_dictionary %s" % original_dictionary) | |||
print("result_dictionary %s" % result_dictionary) | |||
assert(result_dictionary==original_dictionary) | |||
print() | |||
server.quit() |
@@ -12,27 +12,27 @@ class test_service: | |||
run = 1 | |||
def test_integer(self,pass_integer): | |||
print type(pass_integer) | |||
print(type(pass_integer)) | |||
return pass_integer | |||
def test_string(self,pass_string): | |||
print type(pass_string) | |||
print(type(pass_string)) | |||
return pass_string | |||
def test_float(self,pass_float): | |||
print type(pass_float) | |||
print(type(pass_float)) | |||
return pass_float | |||
def test_tuple(self,pass_tuple): | |||
print type(pass_tuple), pass_tuple | |||
print(type(pass_tuple), pass_tuple) | |||
return pass_tuple | |||
def test_list(self,pass_list): | |||
print type(pass_list), pass_list | |||
print(type(pass_list), pass_list) | |||
return pass_list | |||
def test_dictionary(self,pass_dictionary): | |||
print type(pass_dictionary), pass_dictionary | |||
print(type(pass_dictionary), pass_dictionary) | |||
return pass_dictionary | |||
def quit(self): | |||
@@ -22,29 +22,29 @@ else: | |||
big = repr('.' * (1<<18) ) | |||
# ...in an object | |||
print "server.echo_ino(big):..", | |||
print("server.echo_ino(big):..", end=' ') | |||
tmp = server.echo_ino(big) | |||
print "done" | |||
print("done") | |||
# ...in an object in an object | |||
print "server.prop.echo2(big)..", | |||
print("server.prop.echo2(big)..", end=' ') | |||
tmp = server.prop.echo2(big) | |||
print "done" | |||
print("done") | |||
# ...with keyword arguments | |||
print 'server.echo_wkw(third = big, first = "one", second = "two")..', | |||
print('server.echo_wkw(third = big, first = "one", second = "two")..', end=' ') | |||
tmp = server.echo_wkw(third = big, first = "one", second = "two") | |||
print "done" | |||
print("done") | |||
# ...with a context object | |||
print "server.echo_wc(big)..", | |||
print("server.echo_wc(big)..", end=' ') | |||
tmp = server.echo_wc(big) | |||
print "done" | |||
print("done") | |||
# ...with a header | |||
hd = headerType(data = {"mystring": "Hello World"}) | |||
print "server._hd(hd).echo_wc(big)..", | |||
print("server._hd(hd).echo_wc(big)..", end=' ') | |||
tmp = server._hd(hd).echo_wc(big) | |||
print "done" | |||
print("done") | |||
server.quit() |
@@ -25,22 +25,22 @@ MethodNamespaceURI = 'http://tempuri.org/' | |||
server = SOAPProxy(SoapEndpointURL, namespace = MethodNamespaceURI, | |||
soapaction='http://tempuri.org/GetCNNNews', encoding = None, | |||
http_proxy=proxy) | |||
print "[server level CNN News call]" | |||
print server.GetCNNNews() | |||
print("[server level CNN News call]") | |||
print(server.GetCNNNews()) | |||
# Do it inline ala SOAP::LITE, also specify the actually ns (namespace) and | |||
# sa (soapaction) | |||
server = SOAPProxy(SoapEndpointURL, encoding = None) | |||
print "[inline CNNNews call]" | |||
print server._ns('ns1', | |||
MethodNamespaceURI)._sa('http://tempuri.org/GetCNNNews').GetCNNNews() | |||
print("[inline CNNNews call]") | |||
print(server._ns('ns1', | |||
MethodNamespaceURI)._sa('http://tempuri.org/GetCNNNews').GetCNNNews()) | |||
# Create an instance of your server with specific namespace and then use | |||
# inline soapactions for each call | |||
dq = server._ns(MethodNamespaceURI) | |||
print "[namespaced CNNNews call]" | |||
print dq._sa('http://tempuri.org/GetCNNNews').GetCNNNews() | |||
print "[namespaced CBSNews call]" | |||
print dq._sa('http://tempuri.org/GetCBSNews').GetCBSNews() | |||
print("[namespaced CNNNews call]") | |||
print(dq._sa('http://tempuri.org/GetCNNNews').GetCNNNews()) | |||
print("[namespaced CBSNews call]") | |||
print(dq._sa('http://tempuri.org/GetCBSNews').GetCBSNews()) |
@@ -23,18 +23,18 @@ server = SOAPProxy("http://services.xmethods.com:9090/soap", | |||
namespace = 'urn:xmethods-delayed-quotes', | |||
http_proxy=proxy) | |||
print "IBM>>", server.getQuote(symbol = 'IBM') | |||
print("IBM>>", server.getQuote(symbol = 'IBM')) | |||
# Do it inline ala SOAP::LITE, also specify the actually ns | |||
server = SOAPProxy("http://services.xmethods.com:9090/soap", | |||
http_proxy=proxy) | |||
print "IBM>>", server._ns('ns1', | |||
'urn:xmethods-delayed-quotes').getQuote(symbol = 'IBM') | |||
print("IBM>>", server._ns('ns1', | |||
'urn:xmethods-delayed-quotes').getQuote(symbol = 'IBM')) | |||
# Create a namespaced version of your server | |||
dq = server._ns('urn:xmethods-delayed-quotes') | |||
print "IBM>>", dq.getQuote(symbol='IBM') | |||
print "ORCL>>", dq.getQuote(symbol='ORCL') | |||
print "INTC>>", dq.getQuote(symbol='INTC') | |||
print("IBM>>", dq.getQuote(symbol='IBM')) | |||
print("ORCL>>", dq.getQuote(symbol='ORCL')) | |||
print("INTC>>", dq.getQuote(symbol='INTC')) |
@@ -7,4 +7,4 @@ url = 'http://www.xmethods.org/sd/2001/TemperatureService.wsdl' | |||
zip = '06340' | |||
proxy = SOAPpy.WSDL.Proxy(url) | |||
temp = proxy.getTemp(zip) | |||
print 'Temperature at', zip, 'is', temp | |||
print('Temperature at', zip, 'is', temp) |
@@ -71,13 +71,13 @@ def DOMParse(inxml): | |||
# Wierd but the SAX parser runs really slow the first time. | |||
# Probably got to load a c module or something | |||
SAXParse(x) | |||
print "Simple XML" | |||
print "SAX Parse, no marshalling ", SAXParse(x) | |||
print "SOAP Parse, and marshalling ", SOAPParse(x) | |||
print "DOM Parse, no marshalling ", DOMParse(x) | |||
print "Complex XML (references)" | |||
print "SAX Parse, no marshalling ", SAXParse(x2) | |||
print "SOAP Parse, and marshalling ", SOAPParse(x2) | |||
print "DOM Parse, no marshalling ", DOMParse(x2) | |||
print() | |||
print("Simple XML") | |||
print("SAX Parse, no marshalling ", SAXParse(x)) | |||
print("SOAP Parse, and marshalling ", SOAPParse(x)) | |||
print("DOM Parse, no marshalling ", DOMParse(x)) | |||
print() | |||
print("Complex XML (references)") | |||
print("SAX Parse, no marshalling ", SAXParse(x2)) | |||
print("SOAP Parse, and marshalling ", SOAPParse(x2)) | |||
print("DOM Parse, no marshalling ", DOMParse(x2)) |
@@ -24,15 +24,15 @@ SERIAL=1123214 | |||
MY_PORT=15600 | |||
def resourceChanged (url): | |||
print "\n##### NOTIFICATION MESSAGE: Resource %s has changed #####\n" % url | |||
print("\n##### NOTIFICATION MESSAGE: Resource %s has changed #####\n" % url) | |||
return booleanType(1) | |||
def printstatus (cmd, stat): | |||
print() | |||
if stat.flError: | |||
print "### %s failed: %s ###" % (cmd, stat.message) | |||
print("### %s failed: %s ###" % (cmd, stat.message)) | |||
else: | |||
print "### %s successful: %s ###" % (cmd, stat.message) | |||
print("### %s successful: %s ###" % (cmd, stat.message)) | |||
return not stat.flError | |||
server = SOAPProxy(encoding="US-ASCII", | |||
@@ -51,11 +51,11 @@ printstatus("registerUser", reg) | |||
# See what this server can do | |||
reg = server.getServerCapabilities (email=EMAIL, password=PASSWORD) | |||
if printstatus("getServerCapabilities", reg): | |||
print "Legal file extensions: " + str(reg.legalFileExtensions) | |||
print "Maximum file size: " + str(reg.maxFileSize) | |||
print "Maximum bytes per user: " + str(reg.maxBytesPerUser) | |||
print "Number of bytes in use by the indicated user: " + str(reg.ctBytesInUse) | |||
print "URL of the folder containing your files: " + str(reg.yourUpstreamFolderUrl) | |||
print("Legal file extensions: " + str(reg.legalFileExtensions)) | |||
print("Maximum file size: " + str(reg.maxFileSize)) | |||
print("Maximum bytes per user: " + str(reg.maxBytesPerUser)) | |||
print("Number of bytes in use by the indicated user: " + str(reg.ctBytesInUse)) | |||
print("URL of the folder containing your files: " + str(reg.yourUpstreamFolderUrl)) | |||
# Store some files | |||
reg = server.saveMultipleFiles (email=EMAIL, password=PASSWORD, | |||
@@ -65,9 +65,9 @@ reg = server.saveMultipleFiles (email=EMAIL, password=PASSWORD, | |||
'<html><title>bennett@actzero.com home page</title><body>' + | |||
'<a href=index.html>Hello Earth Again</a></body></html>']) | |||
if printstatus("saveMultipleFiles", reg): | |||
print "Files stored:" | |||
print("Files stored:") | |||
for file in reg.urlList: | |||
print " %s" % file | |||
print(" %s" % file) | |||
# Save this for call to test pleaseNotify | |||
mylist = reg.urlList | |||
@@ -80,12 +80,12 @@ if printstatus("getMyDirectory", reg): | |||
i = 1 | |||
while hasattr(reg.directory, "file%05d" % i): | |||
d = getattr(reg.directory, "file%05d" % i) | |||
print "Relative Path: %s" % d.relativePath | |||
print "Size: %d" % d.size | |||
print "Created: %s" % d.whenCreated | |||
print "Last Uploaded: %s" % d.whenLastUploaded | |||
print "URL: %s" % d.url | |||
print("Relative Path: %s" % d.relativePath) | |||
print("Size: %d" % d.size) | |||
print("Created: %s" % d.whenCreated) | |||
print("Last Uploaded: %s" % d.whenLastUploaded) | |||
print("URL: %s" % d.url) | |||
print() | |||
i += 1 | |||
# Set up notification | |||
@@ -95,8 +95,8 @@ printstatus("notifyProcedure", reg) | |||
pid = os.fork() | |||
if pid == 0: | |||
# I am a child process. Set up SOAP server to receive notification | |||
print "## Starting notification server ##" | |||
print() | |||
print("## Starting notification server ##") | |||
s = SOAPServer(('localhost', MY_PORT)) | |||
s.registerFunction(resourceChanged) | |||
@@ -106,7 +106,7 @@ else: | |||
def handler(signum, frame): | |||
# Kill child process | |||
print "Killing child process %d" % pid | |||
print("Killing child process %d" % pid) | |||
os.kill(pid, signal.SIGINT) | |||
signal.signal(signal.SIGINT, handler) | |||
@@ -119,8 +119,8 @@ else: | |||
fileTextList=['<html><title>bennett@actzero.com home page</title><body>' + | |||
'<a href=again.html>Hello Bennett</a></body></html>']) | |||
if printstatus("saveMultipleFiles", reg): | |||
print "Files stored:" | |||
print("Files stored:") | |||
for file in reg.urlList: | |||
print " %s" % file | |||
print(" %s" % file) | |||
os.waitpid(pid, 0) |
@@ -27,18 +27,18 @@ def kill(): | |||
def server1(): | |||
"""start a SOAP server on localhost:8000""" | |||
print "Starting SOAP Server...", | |||
print("Starting SOAP Server...", end=' ') | |||
server = SOAPpy.Server.SOAPServer(addr=('127.0.0.1', 8000)) | |||
server.registerFunction(echoDateTime) | |||
server.registerFunction(echo) | |||
server.registerFunction(kill) | |||
print "Done." | |||
print("Done.") | |||
global quit | |||
while not quit: | |||
server.handle_request() | |||
quit = 0 | |||
print "Server shut down." | |||
print("Server shut down.") | |||
class ClientTestCase(unittest.TestCase): | |||
@@ -55,24 +55,24 @@ class ClientTestCase(unittest.TestCase): | |||
connected = False | |||
server = None | |||
while not connected and time.time() - start < self.startup_timeout: | |||
print "Trying to connect to the SOAP server...", | |||
print("Trying to connect to the SOAP server...", end=' ') | |||
try: | |||
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
server.echo('Hello World') | |||
except socket.error, e: | |||
print "Failure:", e | |||
except socket.error as e: | |||
print("Failure:", e) | |||
time.sleep(0.5) | |||
else: | |||
connected = True | |||
self.server = server | |||
print "Success." | |||
print("Success.") | |||
if not connected: raise 'Server failed to start.' | |||
def tearDown(self): | |||
'''This is run once after each unit test.''' | |||
print "Trying to shut down SOAP server..." | |||
print("Trying to shut down SOAP server...") | |||
if self.server is not None: | |||
self.server.kill() | |||
time.sleep(5) | |||
@@ -84,14 +84,14 @@ class ClientTestCase(unittest.TestCase): | |||
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
s = 'Hello World' | |||
self.assertEquals(server.echo(s), s+s) | |||
self.assertEqual(server.echo(s), s+s) | |||
def testNamedEcho(self): | |||
'''Test echo function.''' | |||
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
s = 'Hello World' | |||
self.assertEquals(server.echo(s=s), s+s) | |||
self.assertEqual(server.echo(s=s), s+s) | |||
def testEchoDateTime(self): | |||
'''Test passing DateTime objects.''' | |||
@@ -99,7 +99,7 @@ class ClientTestCase(unittest.TestCase): | |||
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
dt = SOAPpy.Types.dateTimeType(data=time.time()) | |||
dt_return = server.echoDateTime(dt) | |||
self.assertEquals(dt_return, dt) | |||
self.assertEqual(dt_return, dt) | |||
# def testNoLeak(self): | |||
@@ -60,11 +60,11 @@ class IntegerArithmenticTestCase(unittest.TestCase): | |||
'''Parse XMethods TemperatureService wsdl from a string.''' | |||
wsdl = SOAPpy.WSDL.Proxy(self.wsdlstr1, http_proxy=http_proxy) | |||
self.assertEquals(len(wsdl.methods), 1) | |||
method = wsdl.methods.values()[0] | |||
self.assertEquals(method.methodName, 'getTemp') | |||
self.assertEquals(method.namespace, 'urn:xmethods-Temperature') | |||
self.assertEquals(method.location, | |||
self.assertEqual(len(wsdl.methods), 1) | |||
method = list(wsdl.methods.values())[0] | |||
self.assertEqual(method.methodName, 'getTemp') | |||
self.assertEqual(method.namespace, 'urn:xmethods-Temperature') | |||
self.assertEqual(method.location, | |||
'http://services.xmethods.net:80/soap/servlet/rpcrouter') | |||
def testParseWsdlFile(self): | |||
@@ -77,25 +77,25 @@ class IntegerArithmenticTestCase(unittest.TestCase): | |||
try: | |||
f = file(fname) | |||
except (IOError, OSError): | |||
self.assert_(0, 'Cound not find wsdl file "%s"' % file) | |||
self.assertTrue(0, 'Cound not find wsdl file "%s"' % file) | |||
wsdl = SOAPpy.WSDL.Proxy(fname, http_proxy=http_proxy) | |||
self.assertEquals(len(wsdl.methods), 1) | |||
method = wsdl.methods.values()[0] | |||
self.assertEquals(method.methodName, 'getTemp') | |||
self.assertEquals(method.namespace, 'urn:xmethods-Temperature') | |||
self.assertEquals(method.location, | |||
self.assertEqual(len(wsdl.methods), 1) | |||
method = list(wsdl.methods.values())[0] | |||
self.assertEqual(method.methodName, 'getTemp') | |||
self.assertEqual(method.namespace, 'urn:xmethods-Temperature') | |||
self.assertEqual(method.location, | |||
'http://services.xmethods.net:80/soap/servlet/rpcrouter') | |||
def testParseWsdlUrl(self): | |||
'''Parse XMethods TemperatureService wsdl from a url.''' | |||
wsdl = SOAPpy.WSDL.Proxy('http://www.xmethods.net/sd/2001/TemperatureService.wsdl', http_proxy=http_proxy) | |||
self.assertEquals(len(wsdl.methods), 1) | |||
method = wsdl.methods.values()[0] | |||
self.assertEquals(method.methodName, 'getTemp') | |||
self.assertEquals(method.namespace, 'urn:xmethods-Temperature') | |||
self.assertEquals(method.location, | |||
self.assertEqual(len(wsdl.methods), 1) | |||
method = list(wsdl.methods.values())[0] | |||
self.assertEqual(method.methodName, 'getTemp') | |||
self.assertEqual(method.namespace, 'urn:xmethods-Temperature') | |||
self.assertEqual(method.location, | |||
'http://services.xmethods.net:80/soap/servlet/rpcrouter') | |||
def testGetTemp(self): | |||
@@ -104,7 +104,7 @@ class IntegerArithmenticTestCase(unittest.TestCase): | |||
zip = '01072' | |||
proxy = SOAPpy.WSDL.Proxy(self.wsdlstr1, http_proxy=http_proxy) | |||
temp = proxy.getTemp(zip) | |||
print 'Temperature at', zip, 'is', temp | |||
print('Temperature at', zip, 'is', temp) | |||
if __name__ == '__main__': | |||
@@ -16,6 +16,6 @@ for i in range(400): | |||
gc.collect() | |||
if len(gc.garbage): | |||
print 'still leaking' | |||
print('still leaking') | |||
else: | |||
print 'no leak' | |||
print('no leak') |
@@ -6,6 +6,6 @@ __docformat__ = 'restructuredtext en' | |||
from SOAPpy import SOAPProxy | |||
server = SOAPProxy("http://localhost:8080/") | |||
print server.echo("Hello world") | |||
print(server.echo("Hello world")) | |||
# vim:set et sts=4 ts=4 tw=80: |
@@ -21,5 +21,5 @@ server = SOAPProxy("http://services.xmethods.com:80/perl/soaplite.cgi", | |||
http_proxy=proxy) | |||
babel = server._ns('urn:xmethodsBabelFish#BabelFish') | |||
print babel.BabelFish(translationmode = "en_fr", | |||
sourcedata = "The quick brown fox did something or other") | |||
print(babel.BabelFish(translationmode = "en_fr", | |||
sourcedata = "The quick brown fox did something or other")) |
@@ -22,4 +22,4 @@ MethodNamespaceURI = 'urn:xmethods-Temperature' | |||
# Do it inline ala SOAP::LITE, also specify the actually ns | |||
server = SOAPProxy(SoapEndpointURL, http_proxy=proxy) | |||
print "inline", server._ns('ns1', MethodNamespaceURI).getTemp(zipcode='94063') | |||
print("inline", server._ns('ns1', MethodNamespaceURI).getTemp(zipcode='94063')) |
@@ -19,7 +19,7 @@ except: | |||
server = SOAPProxy("http://www.SoapClient.com/xml/SQLDataSoap.WSDL", | |||
http_proxy=proxy) | |||
print "whois>>", server.ProcessSRL(SRLFile="WHOIS.SRI", | |||
print("whois>>", server.ProcessSRL(SRLFile="WHOIS.SRI", | |||
RequestName="whois", | |||
key = "microsoft.com") | |||
key = "microsoft.com")) | |||
@@ -18,9 +18,9 @@ except: | |||
proxy = None | |||
print "##########################################" | |||
print " SOAP services registered at xmethods.net" | |||
print "##########################################" | |||
print("##########################################") | |||
print(" SOAP services registered at xmethods.net") | |||
print("##########################################") | |||
server = SOAPProxy("http://www.xmethods.net/interfaces/query", | |||
namespace = 'urn:xmethods-delayed-quotes', | |||
@@ -29,6 +29,6 @@ server = SOAPProxy("http://www.xmethods.net/interfaces/query", | |||
names = server.getAllServiceNames() | |||
for item in names: | |||
print 'name:', item['name'] | |||
print 'id :', item['id'] | |||
print('name:', item['name']) | |||
print('id :', item['id']) | |||
print() |
@@ -24,35 +24,35 @@ for line in lines: | |||
try: table[row[0]].append([restofrow[0],restofrow[2:]]) | |||
except KeyError: table[row[0]] = [[restofrow[0],restofrow[2:]]] | |||
print "<html><body>" | |||
print "<script>function popup(text) {" | |||
print "text = '<html><head><title>Test Detail</title></head><body><p>' + text + '</p></body></html>';" | |||
print "newWin=window.open('','win1','location=no,menubar=no,width=400,height=200');" | |||
print "newWin.document.open();" | |||
print "newWin.document.write(text);" | |||
print "newWin.focus(); } </script>" | |||
print "<br><table style='font-family: Arial; color: #cccccc'><tr><td colspan=2><font face=arial color=#cccccc><b>Summary</b></font></td></tr>" | |||
print("<html><body>") | |||
print("<script>function popup(text) {") | |||
print("text = '<html><head><title>Test Detail</title></head><body><p>' + text + '</p></body></html>';") | |||
print("newWin=window.open('','win1','location=no,menubar=no,width=400,height=200');") | |||
print("newWin.document.open();") | |||
print("newWin.document.write(text);") | |||
print("newWin.focus(); } </script>") | |||
print("<br><table style='font-family: Arial; color: #cccccc'><tr><td colspan=2><font face=arial color=#cccccc><b>Summary</b></font></td></tr>") | |||
for x in tally: | |||
z = x[:-1].split(":",1) | |||
print "<tr><td><font face=arial color=#cccccc>",z[0],"</font></td><td><font face=arial color=#cccccc>",z[1],"</font></td></tr>" | |||
print "</table><br>" | |||
print("<tr><td><font face=arial color=#cccccc>",z[0],"</font></td><td><font face=arial color=#cccccc>",z[1],"</font></td></tr>") | |||
print("</table><br>") | |||
c = 0 | |||
totalmethods = len(table[table.keys()[0]]) | |||
totalmethods = len(table[list(table.keys())[0]]) | |||
while c < totalmethods: | |||
print "<br><table width='95%' style='font-family: Arial'>" | |||
print "<tr><td width='27%' bgcolor='#cccccc'></td>" | |||
print("<br><table width='95%' style='font-family: Arial'>") | |||
print("<tr><td width='27%' bgcolor='#cccccc'></td>") | |||
cols = [c, c + 1, c + 2] | |||
if c != 16: | |||
cols += [c + 3] | |||
for i in cols: | |||
try: header = table[table.keys()[0]][i][0] | |||
try: header = table[list(table.keys())[0]][i][0] | |||
except: break | |||
print "<td width ='17%' align='center' bgcolor='#cccccc'><b>",header,"</b></td>" | |||
print "</tr>" | |||
l = table.keys() | |||
print("<td width ='17%' align='center' bgcolor='#cccccc'><b>",header,"</b></td>") | |||
print("</tr>") | |||
l = list(table.keys()) | |||
l.sort() | |||
for key in l: | |||
print "<tr><td bgcolor='#cccccc'>", key , "</td>" | |||
print("<tr><td bgcolor='#cccccc'>", key , "</td>") | |||
for i in cols: | |||
try: status = table[key][i][1][0] | |||
except: break | |||
@@ -69,8 +69,8 @@ while c < totalmethods: | |||
hreftitle = table[key][i][1][1].replace("'","") # remove apostrophes from title properties | |||
popuphtml = '"' + cgi.escape(cgi.escape(table[key][i][1][1]).replace("'","'").replace('"',""")) + '"' | |||
status = "<a title='" + hreftitle + "' href='javascript:popup(" + popuphtml + ")'>Failed</a>" | |||
print "<td align='center' bgcolor=" , bgcolor , ">" , status , "</td>" | |||
print "</tr>" | |||
print "</table>" | |||
print("<td align='center' bgcolor=" , bgcolor , ">" , status , "</td>") | |||
print("</tr>") | |||
print("</table>") | |||
c = c + len(cols) | |||
print "</body></html>" | |||
print("</body></html>") |
@@ -45,9 +45,9 @@ def usage (error = None): | |||
sys.stdout = sys.stderr | |||
if error != None: | |||
print error | |||
print(error) | |||
print """usage: %s [options] [server ...] | |||
print("""usage: %s [options] [server ...] | |||
If a long option shows an argument is mandatory, it's mandatory for the | |||
equivalent short option also. | |||
@@ -75,7 +75,7 @@ def usage (error = None): | |||
-t, --stacktrace print a stack trace on each unexpected failure | |||
-T, --always-stacktrace | |||
print a stack trace on any failure | |||
""" % (sys.argv[0], DEFAULT_SERVERS_FILE), | |||
""" % (sys.argv[0], DEFAULT_SERVERS_FILE), end=' ') | |||
sys.exit (0) | |||
@@ -83,19 +83,19 @@ def usage (error = None): | |||
def methodUsage (): | |||
sys.stdout = sys.stderr | |||
print "Methods are specified by number. Multiple methods can be " \ | |||
print("Methods are specified by number. Multiple methods can be " \ | |||
"specified using a\ncomma-separated list of numbers or ranges. " \ | |||
"For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n" | |||
"For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n") | |||
print "The available methods are:\n" | |||
print("The available methods are:\n") | |||
half = (len (DEFAULT_METHODS) + 1) / 2 | |||
for i in range (half): | |||
print "%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), | |||
print("%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), end=' ') | |||
if i + half < len (DEFAULT_METHODS): | |||
print "%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), | |||
print("%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), end=' ') | |||
print() | |||
sys.exit (0) | |||
@@ -132,9 +132,8 @@ def readServers (file): | |||
value = cur[tag] | |||
value += ' ' + line.strip () | |||
elif line[0] == '_': | |||
raise ValueError, \ | |||
"%s, line %d: can't have a tag starting with `_'" % \ | |||
(f.filename(), f.filelineno()) | |||
raise ValueError("%s, line %d: can't have a tag starting with `_'" % \ | |||
(f.filename(), f.filelineno())) | |||
else: | |||
tag, value = line.split (':', 1) | |||
@@ -150,18 +149,16 @@ def readServers (file): | |||
elif value.lower() in ('1', 'yes', 'false'): | |||
value = 1 | |||
else: | |||
raise ValueError, \ | |||
"%s, line %d: unknown typed value `%s'" % \ | |||
(f.filename(), f.filelineno(), value) | |||
raise ValueError("%s, line %d: unknown typed value `%s'" % \ | |||
(f.filename(), f.filelineno(), value)) | |||
elif tag == 'name': | |||
if names.has_key(value): | |||
if value in names: | |||
old = names[value] | |||
raise ValueError, \ | |||
"%s, line %d: already saw a server named `%s' " \ | |||
raise ValueError("%s, line %d: already saw a server named `%s' " \ | |||
"(on line %d of %s)" % \ | |||
(f.filename(), f.filelineno(), value, | |||
old['_line'], old['_file']) | |||
old['_line'], old['_file'])) | |||
names[value] = cur | |||
if tag == 'nonfunctional': | |||
@@ -173,16 +170,14 @@ def readServers (file): | |||
try: | |||
del cur['nonfunctional'][value] | |||
except: | |||
raise ValueError, \ | |||
"%s, line %d: `%s' not marked nonfunctional" % \ | |||
(f.filename(), f.filelineno(), value) | |||
raise ValueError("%s, line %d: `%s' not marked nonfunctional" % \ | |||
(f.filename(), f.filelineno(), value)) | |||
elif tag == 'like': | |||
try: | |||
new = copy.deepcopy(names[value]) | |||
except: | |||
raise ValueError, \ | |||
"%s, line %d: don't know about a server named `%s'" % \ | |||
(f.filename(), f.filelineno(), value) | |||
raise ValueError("%s, line %d: don't know about a server named `%s'" % \ | |||
(f.filename(), f.filelineno(), value)) | |||
# This is so we don't lose the nonfunctional methods in new or | |||
# in cur | |||
@@ -213,7 +208,7 @@ def str2list (s): | |||
else: | |||
l[int (i)] = 1 | |||
l = l.keys () | |||
l = list(l.keys ()) | |||
l.sort () | |||
return l | |||
@@ -235,7 +230,7 @@ def testActorShouldPass (server, action, harsh): | |||
result = int (result) | |||
if result != test: | |||
raise Exception, "expected %s, got %s" % (test, result) | |||
raise Exception("expected %s, got %s" % (test, result)) | |||
def testActorShouldFail (server, action, harsh): | |||
test = 42 | |||
@@ -250,12 +245,12 @@ def testActorShouldFail (server, action, harsh): | |||
try: | |||
result = server.echoInteger (inputInteger = test) | |||
except SOAP.faultType, e: | |||
except SOAP.faultType as e: | |||
if harsh and e.faultcode != 'SOAP-ENV:MustUnderstand': | |||
raise AttributeError, "unexpected faultcode %s" % e.faultcode | |||
raise AttributeError("unexpected faultcode %s" % e.faultcode) | |||
return | |||
raise Exception, "should fail, succeeded with %s" % result | |||
raise Exception("should fail, succeeded with %s" % result) | |||
def testEchoFloat (server, action, harsh): | |||
server = server._sa (action % {'methodname': 'echoFloat'}) | |||
@@ -267,7 +262,7 @@ def testEchoFloat (server, action, harsh): | |||
result = float (result) | |||
if not nearlyeq (result, test): | |||
raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
def testEchoFloatArray (server, action, harsh): | |||
test = [0.0, 1.0, -1.0, 3853.33333333] | |||
@@ -279,8 +274,8 @@ def testEchoFloatArray (server, action, harsh): | |||
result[i] = float (result[i]) | |||
if not nearlyeq (result[i], test[i]): | |||
raise Exception, "@ %d expected %s, got %s" % \ | |||
(i, repr (test), repr (result)) | |||
raise Exception("@ %d expected %s, got %s" % \ | |||
(i, repr (test), repr (result))) | |||
def testEchoFloatINF (server, action, harsh): | |||
try: | |||
@@ -294,7 +289,7 @@ def testEchoFloatINF (server, action, harsh): | |||
result = float (result) | |||
if result != test: | |||
raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
def testEchoFloatNaN (server, action, harsh): | |||
try: | |||
@@ -308,7 +303,7 @@ def testEchoFloatNaN (server, action, harsh): | |||
result = float (result) | |||
if result != test: | |||
raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
def testEchoFloatNegINF (server, action, harsh): | |||
try: | |||
@@ -323,7 +318,7 @@ def testEchoFloatNegINF (server, action, harsh): | |||
result = float (result) | |||
if result != test: | |||
raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
def testEchoFloatNegZero (server, action, harsh): | |||
test = float ('-0.0') | |||
@@ -334,7 +329,7 @@ def testEchoFloatNegZero (server, action, harsh): | |||
result = float (result) | |||
if result != test: | |||
raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
def testEchoInteger (server, action, harsh): | |||
server = server._sa (action % {'methodname': 'echoInteger'}) | |||
@@ -346,7 +341,7 @@ def testEchoInteger (server, action, harsh): | |||
result = int (result) | |||
if result != test: | |||
raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
def testEchoIntegerArray (server, action, harsh): | |||
test = [0, 1, -1, 3853] | |||
@@ -358,14 +353,14 @@ def testEchoIntegerArray (server, action, harsh): | |||
result[i] = int (result[i]) | |||
if result[i] != test[i]: | |||
raise Exception, "@ %d expected %s, got %s" % \ | |||
(i, repr (test), repr (result)) | |||
raise Exception("@ %d expected %s, got %s" % \ | |||
(i, repr (test), repr (result))) | |||
relaxedStringTests = ['', 'Hello', '\'<&>"',] | |||
relaxedStringTests = ['Hello', '\'<&>"',] | |||
harshStringTests = ['', 'Hello', '\'<&>"', | |||
u'\u0041', u'\u00a2', u'\u0141', u'\u2342', | |||
u'\'<\u0041&>"', u'\'<\u00a2&>"', u'\'<\u0141&>"', u'\'<\u2342&>"',] | |||
'\u0041', '\u00a2', '\u0141', '\u2342', | |||
'\'<\u0041&>"', '\'<\u00a2&>"', '\'<\u0141&>"', '\'<\u2342&>"',] | |||
def testEchoString (server, action, harsh): | |||
if harsh: | |||
@@ -378,8 +373,8 @@ def testEchoString (server, action, harsh): | |||
result = server.echoString (inputString = test) | |||
if result != test: | |||
raise Exception, "expected %s, got %s" % \ | |||
(repr (test), repr (result)) | |||
raise Exception("expected %s, got %s" % \ | |||
(repr (test), repr (result))) | |||
def testEchoStringArray (server, action, harsh): | |||
if harsh: | |||
@@ -390,7 +385,7 @@ def testEchoStringArray (server, action, harsh): | |||
result = server.echoStringArray (inputStringArray = test) | |||
if result != test: | |||
raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
def testEchoStruct (server, action, harsh): | |||
test = {'varFloat': 2.256, 'varInt': 474, 'varString': 'Utah'} | |||
@@ -402,16 +397,16 @@ def testEchoStruct (server, action, harsh): | |||
result.varInt = int (result.varInt) | |||
if not nearlyeq (test['varFloat'], result.varFloat): | |||
raise Exception, ".varFloat expected %s, got %s" % \ | |||
(i, repr (test['varFloat']), repr (result.varFloat)) | |||
raise Exception(".varFloat expected %s, got %s" % \ | |||
(i, repr (test['varFloat']), repr (result.varFloat))) | |||
for i in test.keys (): | |||
for i in list(test.keys ()): | |||
if i == 'varFloat': | |||
continue | |||
if test[i] != getattr (result, i): | |||
raise Exception, ".%s expected %s, got %s" % \ | |||
(i, repr (test[i]), repr (getattr (result, i))) | |||
raise Exception(".%s expected %s, got %s" % \ | |||
(i, repr (test[i]), repr (getattr (result, i)))) | |||
def testEchoStructArray (server, action, harsh): | |||
@@ -427,17 +422,16 @@ def testEchoStructArray (server, action, harsh): | |||
result[s].varInt = int (result[s].varInt) | |||
if not nearlyeq (test[s]['varFloat'], result[s].varFloat): | |||
raise Exception, \ | |||
"@ %d.varFloat expected %s, got %s" % \ | |||
(s, repr (test[s]['varFloat']), repr (result[s].varFloat)) | |||
raise Exception("@ %d.varFloat expected %s, got %s" % \ | |||
(s, repr (test[s]['varFloat']), repr (result[s].varFloat))) | |||
for i in test[s].keys (): | |||
for i in list(test[s].keys ()): | |||
if i == 'varFloat': | |||
continue | |||
if test[s][i] != getattr (result[s], i): | |||
raise Exception, "@ %d.%s expected %s, got %s" % \ | |||
(s, i, repr (test[s][i]), repr (getattr (result[s], i))) | |||
raise Exception("@ %d.%s expected %s, got %s" % \ | |||
(s, i, repr (test[s][i]), repr (getattr (result[s], i)))) | |||
def testEchoVeryLargeFloat (server, action, harsh): | |||
test = 2.2535e29 | |||
@@ -448,7 +442,7 @@ def testEchoVeryLargeFloat (server, action, harsh): | |||
result = float (result) | |||
if not nearlyeq (result, test): | |||
raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
def testEchoVerySmallFloat (server, action, harsh): | |||
test = 2.2535e29 | |||
@@ -459,16 +453,16 @@ def testEchoVerySmallFloat (server, action, harsh): | |||
result = float (result) | |||
if not nearlyeq (result, test): | |||
raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
def testEchoVoid (server, action, harsh): | |||
server = server._sa (action % {'methodname': 'echoVoid'}) | |||
result = server.echoVoid () | |||
for k in result.__dict__.keys (): | |||
for k in list(result.__dict__.keys ()): | |||
if k[0] != '_': | |||
raise Exception, "expected an empty structType, got %s" % \ | |||
repr (result.__dict__) | |||
raise Exception("expected an empty structType, got %s" % \ | |||
repr (result.__dict__)) | |||
def testMustUnderstandEqualsOne (server, action, harsh): | |||
test = 42 | |||
@@ -481,12 +475,12 @@ def testMustUnderstandEqualsOne (server, action, harsh): | |||
try: | |||
result = server.echoInteger (inputInteger = test) | |||
except SOAP.faultType, e: | |||
except SOAP.faultType as e: | |||
if harsh and e.faultcode != 'SOAP-ENV:MustUnderstand': | |||
raise AttributeError, "unexpected faultcode %s" % e.faultcode | |||
raise AttributeError("unexpected faultcode %s" % e.faultcode) | |||
return | |||
raise Exception, "should fail, succeeded with %s" % result | |||
raise Exception("should fail, succeeded with %s" % result) | |||
def testMustUnderstandEqualsZero (server, action, harsh): | |||
test = 42 | |||
@@ -503,7 +497,7 @@ def testMustUnderstandEqualsZero (server, action, harsh): | |||
result = int (result) | |||
if result != test: | |||
raise Exception, "expected %s, got %s" % (test, result) | |||
raise Exception("expected %s, got %s" % (test, result)) | |||
def testEchoDate (server, action, harsh): | |||
test = time.gmtime (time.time ()) | |||
@@ -513,12 +507,12 @@ def testEchoDate (server, action, harsh): | |||
else: | |||
result = server.echoDate (inputDate = SOAP.dateTimeType (test)) | |||
if not SOAP.Config.typed and type (result) in (type (''), type (u'')): | |||
if not SOAP.Config.typed and type (result) in (type (''), type ('')): | |||
p = SOAP.SOAPParser() | |||
result = p.convertDateTime(result, 'timeInstant') | |||
if result != test[:6]: | |||
raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
def testEchoBase64 (server, action, harsh): | |||
test = '\x00\x10\x20\x30\x40\x50\x60\x70\x80\x90\xa0\xb0\xc0\xd0\xe0\xf0' | |||
@@ -530,7 +524,7 @@ def testEchoBase64 (server, action, harsh): | |||
result = base64.decodestring(result) | |||
if result != test: | |||
raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
def main (): | |||
@@ -585,8 +579,7 @@ def main (): | |||
elif opt in ('-T', '--always-stacktrace'): | |||
printtrace = 2 | |||
else: | |||
raise AttributeError, \ | |||
"Recognized but unimplemented option `%s'" % opt | |||
raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
except SystemExit: | |||
raise | |||
except: | |||
@@ -598,7 +591,7 @@ def main (): | |||
servers = readServers (servers) | |||
if methodnums == None: | |||
methodnums = range (1, len (DEFAULT_METHODS) + 1) | |||
methodnums = list(range(1, len (DEFAULT_METHODS) + 1)) | |||
limitre = re.compile ('|'.join (args), re.IGNORECASE) | |||
@@ -628,7 +621,7 @@ def main (): | |||
title = '%s: %s (#%d)' % (s['name'], name, num) | |||
if SOAP.Config.debug: | |||
print "%s:" % title | |||
print("%s:" % title) | |||
try: | |||
fn = globals ()['test' + name[0].upper () + name[1:]] | |||
@@ -636,17 +629,17 @@ def main (): | |||
raise | |||
except: | |||
if 'n' in output: | |||
print title, "test not yet implemented" | |||
print(title, "test not yet implemented") | |||
notimp += 1 | |||
continue | |||
try: | |||
fn (server, s['soapaction'], harsh) | |||
if s['nonfunctional'].has_key (name): | |||
print title, \ | |||
"succeeded despite being marked nonfunctional" | |||
if name in s['nonfunctional']: | |||
print(title, \ | |||
"succeeded despite being marked nonfunctional") | |||
if 's' in output: | |||
print title, "succeeded" | |||
print(title, "succeeded") | |||
succeed += 1 | |||
except KeyboardInterrupt: | |||
raise | |||
@@ -655,18 +648,18 @@ def main (): | |||
if fault[-1] == '\n': | |||
fault = fault[:-1] | |||
if s['nonfunctional'].has_key (name): | |||
if name in s['nonfunctional']: | |||
if 'F' in output: | |||
t = 'as expected' | |||
if s['nonfunctional'][name] != '': | |||
t += ', ' + s['nonfunctional'][name] | |||
print title, "failed (%s) -" % t, fault | |||
print(title, "failed (%s) -" % t, fault) | |||
if printtrace > 1: | |||
traceback.print_exc () | |||
failok += 1 | |||
else: | |||
if 'f' in output: | |||
print title, "failed -", fault | |||
print(title, "failed -", fault) | |||
if printtrace: | |||
traceback.print_exc () | |||
fail += 1 | |||
@@ -675,20 +668,20 @@ def main (): | |||
return -1 | |||
if stats: | |||
print " Tests started at:", time.ctime (started) | |||
print(" Tests started at:", time.ctime (started)) | |||
if stats > 0: | |||
print " Total tests: %d" % total | |||
print " Successes: %d (%3.2f%%)" % \ | |||
(succeed, 100.0 * succeed / total) | |||
print(" Total tests: %d" % total) | |||
print(" Successes: %d (%3.2f%%)" % \ | |||
(succeed, 100.0 * succeed / total)) | |||
if stats > 0 or fail > 0: | |||
print "Failed unexpectedly: %d (%3.2f%%)" % \ | |||
(fail, 100.0 * fail / total) | |||
print("Failed unexpectedly: %d (%3.2f%%)" % \ | |||
(fail, 100.0 * fail / total)) | |||
if stats > 0: | |||
print " Failed as expected: %d (%3.2f%%)" % \ | |||
(failok, 100.0 * failok / total) | |||
print(" Failed as expected: %d (%3.2f%%)" % \ | |||
(failok, 100.0 * failok / total)) | |||
if stats > 0 or notimp > 0: | |||
print " Not implemented: %d (%3.2f%%)" % \ | |||
(notimp, 100.0 * notimp / total) | |||
print(" Not implemented: %d (%3.2f%%)" % \ | |||
(notimp, 100.0 * notimp / total)) | |||
return fail + notimp | |||
@@ -60,19 +60,19 @@ def usage (error = None): | |||
sys.stdout = sys.stderr | |||
if error != None: | |||
print error | |||
print(error) | |||
print """usage: %s [options] | |||
print("""usage: %s [options] | |||
If a long option shows an argument is mandatory, it's mandatory for the | |||
equivalent short option also. The default (if any) is shown in brackets. | |||
-?, --help display this usage | |||
-h, --host=HOST use HOST in the address to listen on [%s] | |||
-p, --port=PORT listen on PORT [%d] | |||
""" % (sys.argv[0], DEFAULT_HOST, DEFAULT_HTTP_PORT), | |||
""" % (sys.argv[0], DEFAULT_HOST, DEFAULT_HTTP_PORT), end=' ') | |||
if SOAP.Config.SSLserver: | |||
print " -s, --ssl serve using SSL" | |||
print(" -s, --ssl serve using SSL") | |||
sys.exit (0) | |||
@@ -101,8 +101,7 @@ def main (): | |||
elif opt in ('-s', '--ssl'): | |||
ssl = 1 | |||
else: | |||
raise AttributeError, \ | |||
"Recognized but unimplemented option `%s'" % opt | |||
raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
except SystemExit: | |||
raise | |||
except: | |||
@@ -62,16 +62,16 @@ def usage (error = None): | |||
sys.stdout = sys.stderr | |||
if error != None: | |||
print error | |||
print(error) | |||
print """usage: %s [options] | |||
print("""usage: %s [options] | |||
If a long option shows an argument is mandatory, it's mandatory for the | |||
equivalent short option also. The default (if any) is shown in brackets. | |||
-?, --help display this usage | |||
-h, --host=HOST use HOST in the address to listen on [%s] | |||
-p, --port=PORT listen on PORT [%d] | |||
""" % (sys.argv[0], DEFAULT_HOST, DEFAULT_PORT), | |||
""" % (sys.argv[0], DEFAULT_HOST, DEFAULT_PORT), end=' ') | |||
sys.exit (0) | |||
@@ -91,8 +91,7 @@ def main (): | |||
elif opt in ('-p', '--port'): | |||
port = int (arg) | |||
else: | |||
raise AttributeError, \ | |||
"Recognized but unimplemented option `%s'" % opt | |||
raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
except SystemExit: | |||
raise | |||
except: | |||
@@ -15,4 +15,4 @@ else: | |||
server = SOAP.SOAPProxy("http://admin:pw3340@localhost:8080/",encoding=None) | |||
x = server.sopa() | |||
print x | |||
print(x) |