From 7002ccffe21d8f40bc0ad363c775dc9cdac7635b Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 19 Apr 2013 10:45:19 +0200 Subject: [PATCH] notes on using the new API, and a first untested stab at that in manifoldAPI --- auth/manifoldbackend.py | 2 ++ manifold/manifoldapi.py | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/auth/manifoldbackend.py b/auth/manifoldbackend.py index 2b1bde59..73ba446a 100644 --- a/auth/manifoldbackend.py +++ b/auth/manifoldbackend.py @@ -21,6 +21,7 @@ class ManifoldBackend: auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password} api = ManifoldAPI(auth) # Authenticate user and get session key + # the new API would expect Get('local:session') instead session_result = api.GetSession() session = session_result.ok_value() if not session: @@ -37,6 +38,7 @@ class ManifoldBackend: self.api = api # Get account details + # the new API would expect Get('local:user') instead persons_result = api.GetPersons(auth) persons = persons_result.ok_value() if not persons: diff --git a/manifold/manifoldapi.py b/manifold/manifoldapi.py index 4d250311..c1615c3e 100644 --- a/manifold/manifoldapi.py +++ b/manifold/manifoldapi.py @@ -38,13 +38,18 @@ class ManifoldAPI: print "kwds",kwds try: result=getattr(self.server, methodName)(self.auth, *args, **kwds) - if debug: - print '===> backend call',methodName, self.auth, self.url,'->', - if not result: print "[no/empty result]" - elif isinstance (result,str): print "result is '%s'"%result - elif isinstance (result,list): print "result is a %d-elts list"%len(result) - else: print "[dont know how to display result]" - return ManifoldResult (code=ManifoldCode.SUCCESS, value=result) + ### attempt to cope with old APIs and new APIs + if isinstance (result, dict) and 'code' in result: + # this sounds like a result from a new API, leave it untouched + pass + else: + if debug: + print '===> backend call',methodName, self.auth, self.url,'->', + if not result: print "[no/empty result]" + elif isinstance (result,str): print "result is '%s'"%result + elif isinstance (result,list): print "result is a %d-elts list"%len(result) + else: print "[dont know how to display result]" + return ManifoldResult (code=ManifoldCode.SUCCESS, value=result) except xmlrpclib.Fault, error: ### xxx this is very rough for now # until we have some agreement about how the API calls should return error conditions -- 2.43.0