summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/wsgi/httputil.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-cpp/trunk/modules/wsgi/httputil.py32
1 files changed, 23 insertions, 9 deletions
diff --git a/sca-cpp/trunk/modules/wsgi/httputil.py b/sca-cpp/trunk/modules/wsgi/httputil.py
index 92da7ec09c..77d19eabe2 100644
--- a/sca-cpp/trunk/modules/wsgi/httputil.py
+++ b/sca-cpp/trunk/modules/wsgi/httputil.py
@@ -22,6 +22,9 @@ from httplib import HTTPConnection, HTTPSConnection
from urlparse import urlparse
from StringIO import StringIO
import os.path
+from string import strip
+from base64 import b64encode
+from sys import stderr
from util import *
from atomutil import *
from jsonutil import *
@@ -34,24 +37,35 @@ class client:
self.uri = urlparse(uri)
def __call__(self, func, *args):
- global id
- req = StringIO()
- writeStrings(jsonRequest(id, func, args), req)
- id = id + 1
- print "HTTP connect:", self.uri.hostname
+
+ # Connect to the configured URI
+ print >> stderr, "Client POST", self.uri.geturl()
c = None
+ headers = {"Content-type": "application/json-rpc"}
if self.uri.scheme == "https":
+
+ # With HTTPS, use a cerficate or HTTP basic authentication
if os.path.exists("server.key"):
c = HTTPSConnection(self.uri.hostname, 443 if self.uri.port == None else self.uri.port, "server.key", "server.crt")
else:
c = HTTPSConnection(self.uri.hostname, 443 if self.uri.port == None else self.uri.port)
+
+ # For HTTP basic authentication the user and password are
+ # provided by htpasswd.py
+ import htpasswd
+ auth = 'Basic ' + b64encode(htpasswd.user + ':' + htpasswd.passwd)
+ headers["Authorization"] = auth
else:
c = HTTPConnection(self.uri.hostname, 80 if self.uri.port == None else self.uri.port)
- print "HTTP connection:", c
- c.request("POST", self.uri.path, req.getvalue(), {"Content-type": "application/json-rpc"})
+
+ # POST the JSON-RPC request
+ global id
+ req = StringIO()
+ writeStrings(jsonRequest(id, func, args), req)
+ id = id + 1
+ c.request("POST", self.uri.path, req.getvalue(), headers)
res = c.getresponse()
- print "HTTP response:", res
- print "HTTP status:", res.status
+ print >> stderr, "Client status", res.status
if res.status != 200:
return None
return jsonResultValue((res.read(),))