summaryrefslogtreecommitdiff
path: root/lang/python22-pth/patches/patch-af
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python22-pth/patches/patch-af')
-rw-r--r--lang/python22-pth/patches/patch-af88
1 files changed, 88 insertions, 0 deletions
diff --git a/lang/python22-pth/patches/patch-af b/lang/python22-pth/patches/patch-af
new file mode 100644
index 00000000000..540c1f79ce1
--- /dev/null
+++ b/lang/python22-pth/patches/patch-af
@@ -0,0 +1,88 @@
+$NetBSD: patch-af,v 1.1.1.1 2002/10/25 10:48:48 drochner Exp $
+
+Unofficial patch to support Basic Auth for XML-RPC.
+
+--- Lib/xmlrpclib.py.orig Tue Oct 15 18:52:10 2002
++++ Lib/xmlrpclib.py Wed Oct 16 11:44:47 2002
+@@ -852,20 +852,55 @@
+
+ return self.parse_response(h.getfile())
+
++ ##
++ # Get authorization info from host parameter
++ # Host may be a string, or a (host, x509-dict) tuple; if a string,
++ # it is checked for a 'user:pw@host' format, and a "Basic Auth"
++ # header is created from the 'user:pw' info.
++ #
++ # @return A tuple of: (actual host, base64-encoded Authorization
++ # header or None, x509 info or empty dictionary)
++
++ def get_host_info(self, host):
++
++ x509 = {}
++ if isinstance(host,tuple):
++ host, x509 = host
++
++ import urllib
++ auth, host = urllib.splituser(host)
++
++ if auth:
++ auth='Basic %s' % auth.encode('base64').strip()
++ else:
++ auth=None
++
++ return host, auth, x509
++
+ def getparser(self):
+ # get parser and unmarshaller
+ return getparser()
+
+ def make_connection(self, host):
+ # create a HTTP connection object from a host descriptor
++ host, auth, x509 = self.get_host_info(host)
+ import httplib
+ return httplib.HTTP(host)
+
+ def send_request(self, connection, handler, request_body):
+ connection.putrequest("POST", handler)
+
++ ##
++ # Send host name (and authorization, if any)
++ #
++ # @param connection Connection handle.
++ # @param host Host object (per get_host_info).
++
+ def send_host(self, connection, host):
++ host, auth, x509 = self.get_host_info(host)
+ connection.putheader("Host", host)
++ if auth:
++ connection.putheader("Authorization", auth)
+
+ def send_user_agent(self, connection):
+ connection.putheader("User-Agent", self.user_agent)
+@@ -901,11 +936,10 @@
+ def make_connection(self, host):
+ # create a HTTPS connection object from a host descriptor
+ # host may be a string, or a (host, x509-dict) tuple
++
+ import httplib
+- if isinstance(host, TupleType):
+- host, x509 = host
+- else:
+- x509 = {}
++ host, auth, x509 = self.get_host_info(host)
++
+ try:
+ HTTPS = httplib.HTTPS
+ except AttributeError:
+@@ -914,10 +948,6 @@
+ else:
+ return apply(HTTPS, (host, None), x509)
+
+- def send_host(self, connection, host):
+- if isinstance(host, TupleType):
+- host, x509 = host
+- connection.putheader("Host", host)
+
+ class ServerProxy:
+ """uri [,options] -> a logical connection to an XML-RPC server