[CalendarServer-changes] [907] PyOpenDirectory/branches/users/cdaboo/new-schema-892/src/ PythonWrapper.cpp

source_changes at macosforge.org source_changes at macosforge.org
Wed Jan 3 19:15:42 PST 2007


Revision: 907
          http://trac.macosforge.org/projects/calendarserver/changeset/907
Author:   cdaboo at apple.com
Date:     2007-01-03 19:15:42 -0800 (Wed, 03 Jan 2007)

Log Message:
-----------
More use of exceptions.

Modified Paths:
--------------
    PyOpenDirectory/branches/users/cdaboo/new-schema-892/src/PythonWrapper.cpp

Modified: PyOpenDirectory/branches/users/cdaboo/new-schema-892/src/PythonWrapper.cpp
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/new-schema-892/src/PythonWrapper.cpp	2007-01-03 21:09:58 UTC (rev 906)
+++ PyOpenDirectory/branches/users/cdaboo/new-schema-892/src/PythonWrapper.cpp	2007-01-04 03:15:42 UTC (rev 907)
@@ -276,24 +276,21 @@
  */
 extern "C" PyObject* odInit(PyObject* self, PyObject* args)
 {
-    int result = 0;
-
     const char* nodename;
     if (!PyArg_ParseTuple(args, "s", &nodename))
+    {
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices odInit: could not parse arguments", 0));		
         return NULL;
-	
+    }
+
 	CDirectoryService* ds = new CDirectoryService(nodename);
-	PyObject* pyds;
 	if (ds != NULL)
 	{
-		pyds = PyCObject_FromVoidPtr(ds, odDestroy);
-		result = 1;
+		return PyCObject_FromVoidPtr(ds, odDestroy);
 	}
 	
-	if (result == 1)
-		return pyds;
-	else
-		Py_RETURN_NONE;
+	PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices odInit: could not initialize directory service", 0));		
+	return NULL;
 }
 
 /*
@@ -314,12 +311,18 @@
 	const char* recordType;
 	PyObject* attributes;
     if (!PyArg_ParseTuple(args, "OsO", &pyds, &recordType, &attributes) || !PyCObject_Check(pyds) || !PyList_Check(attributes))
+    {
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices listAllRecordsWithAttributes: could not parse arguments", 0));		
         return NULL;
+    }
 	
 	// Convert list to CFArray of CFString
 	CFArrayRef cfattributes = PyListToCFArray(attributes);
 	if (cfattributes == NULL)
-		return NULL;
+    {
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices listAllRecordsWithAttributes: could not parse attributes list", 0));		
+        return NULL;
+    }
 
 	CDirectoryService* ds = static_cast<CDirectoryService*>(PyCObject_AsVoidPtr(pyds));
 	if (ds != NULL)
@@ -334,6 +337,8 @@
 			return result;
 		}
 	}
+	else
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices listAllRecordsWithAttributes: invalid directory service argument", 0));		
 	
 	CFRelease(cfattributes);
 	return NULL;
@@ -356,7 +361,10 @@
 	const char* user;
 	const char* pswd;
     if (!PyArg_ParseTuple(args, "Oss", &pyds, &user, &pswd) || !PyCObject_Check(pyds))
+    {
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices authenticateUserBasic: could not parse arguments", 0));		
         return NULL;
+    }
 	
 	CDirectoryService* ds = static_cast<CDirectoryService*>(PyCObject_AsVoidPtr(pyds));
 	if (ds != NULL)
@@ -370,6 +378,8 @@
 				Py_RETURN_FALSE;
 		}
 	}
+	else
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices authenticateUserBasic: invalid directory service argument", 0));		
 	
 	return NULL;
 }
@@ -395,7 +405,10 @@
 	const char* response;
 	const char* method;
     if (!PyArg_ParseTuple(args, "Ossss", &pyds, &user, &challenge, &response, &method) || !PyCObject_Check(pyds))
+    {
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices authenticateUserDigest: could not parse arguments", 0));		
         return NULL;
+    }
 	
 	CDirectoryService* ds = static_cast<CDirectoryService*>(PyCObject_AsVoidPtr(pyds));
 	if (ds != NULL)
@@ -409,6 +422,8 @@
 				Py_RETURN_FALSE;
 		}
 	}
+	else
+		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices authenticateUserDigest: invalid directory service argument", 0));		
 	
 	return NULL;
 }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070103/d2e01ebc/attachment.html


More information about the calendarserver-changes mailing list