notes on using the new API, and a first untested stab at that in manifoldAPI
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 19 Apr 2013 08:45:19 +0000 (10:45 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 19 Apr 2013 08:45:19 +0000 (10:45 +0200)
auth/manifoldbackend.py
manifold/manifoldapi.py

index 2b1bde5..73ba446 100644 (file)
@@ -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:
index 4d25031..c1615c3 100644 (file)
@@ -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