=== modified file 'fedora/tg/client.py' --- fedora/tg/client.py 2007-09-08 08:00:35 +0000 +++ fedora/tg/client.py 2007-10-07 23:44:56 +0000 @@ -30,13 +30,9 @@ import cPickle as pickle import re import inspect +import simplejson from os import path -try: - import simplejson -except ImportError: - import json - log = logging.getLogger(__name__) SESSION_FILE = path.join(path.expanduser('~'), '.fedora_session') @@ -51,11 +47,24 @@ ''' A command-line client to interact with Fedora TurboGears Apps. ''' - def __init__(self, baseURL, username=None, password=None): + def __init__(self, baseURL, username=None, password=None, debug=False): self.baseURL = baseURL self.username = username self.password = password self._sessionCookie = None + + # Setup our logger + sh = logging.StreamHandler() + if debug: + log.setLevel(logging.DEBUG) + sh.setLevel(logging.DEBUG) + else: + log.setLevel(logging.INFO) + sh.setLevel(logging.INFO) + format = logging.Formatter("%(message)s") + sh.setFormatter(format) + log.addHandler(sh) + self._load_session() if username and password: self._authenticate() @@ -87,10 +96,7 @@ else: raise - try: - loginData = simplejson.load(loginPage) - except NameError: - loginData = json.read(loginPage.read()) + loginData = simplejson.load(loginPage) if 'message' in loginData: raise AuthError, 'Unable to login to server: %s' % loginData['message'] @@ -124,15 +130,13 @@ sessionFile = file(SESSION_FILE, 'r') try: savedSession = pickle.load(sessionFile) - + self._sessionCookie = savedSession[self.username] log.debug('Loaded session %s' % self._sessionCookie) except EOFError: log.error('Unable to load session from %s' % SESSION_FILE) + except KeyError: + log.debug('Session is for a different user') sessionFile.close() - try: - self._sessionCookie = savedSession[self.username] - except KeyError: - log.debug('Session is for a different user') def send_request(self, method, auth=False, input=None): ''' @@ -143,7 +147,7 @@ url = self.baseURL + method + '/?tg_format=json' response = None # the JSON that we get back from the server - data = None # decoded JSON via json.read() + data = None # decoded JSON via simplejson.load() log.debug('Creating request %s' % url) req = urllib2.Request(url) @@ -162,16 +166,13 @@ try: data = simplejson.load(response) except NameError: - try: - data = json.read(response.read()) - except json.ReadException, e: - regex = re.compile('(.*)') - match = regex.search(e.message) - if match and len(match.groups()): - log.error(match.groups()[0]) - else: - log.error('Unexpected ReadException during request:' + e) - raise ServerError, e.message + regex = re.compile('(.*)') + match = regex.search(e.message) + if match and len(match.groups()): + log.error(match.groups()[0]) + else: + log.error('Unexpected ReadException during request:' + e) + raise ServerError, e.message except Exception, e: log.error('Error while parsing JSON data from server:', e) raise ServerError, str(e)