From 105745e6ba3bc9ddf4fc9120d82b2aac4cc16888 Mon Sep 17 00:00:00 2001 From: Petro Ladkin Date: Thu, 9 Jan 2014 08:01:48 +0200 Subject: [PATCH] added basic authorization --- jsonrpclib/jsonrpc.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/jsonrpclib/jsonrpc.py b/jsonrpclib/jsonrpc.py index e11939a..6af8b6d 100644 --- a/jsonrpclib/jsonrpc.py +++ b/jsonrpclib/jsonrpc.py @@ -116,7 +116,14 @@ class TransportMixIn(object): # for Python 2.7 support _connection = None + def set_basic_auth(self, user, password): + import base64 + self.__auth = 'Basic %s' % (base64.b64encode('%s:%s' % (user, password))) + def send_content(self, connection, request_body): + if self.__auth != None : + connection.putheader("Authorization", self.__auth) + connection.putheader("Content-Type", "application/json-rpc") connection.putheader("Content-Length", str(len(request_body))) connection.endheaders() @@ -187,7 +194,7 @@ class ServerProxy(XMLServerProxy): """ def __init__(self, uri, transport=None, encoding=None, - verbose=0, version=None): + verbose=0, version=None, user=None, password=None): import urllib if not version: version = config.version @@ -214,6 +221,8 @@ def __init__(self, uri, transport=None, encoding=None, transport = SafeTransport() else: transport = Transport() + if user != None and password != None: + transport.set_basic_auth(user, password) self.__transport = transport self.__encoding = encoding self.__verbose = verbose