PerLDAP compat

David Leonard david.leonard at csee.uq.edu.au
Wed Jul 26 02:10:47 CEST 2000


I was looking at OO models of X.500 directories and came acrosss Perl's
LDAP module and wondered if a compatibility library could be useful to
anyone converting their perl code to python :) :)

its not finished yet but you can see the gist of the api below.

any comments? a waste of time?

The Perl API is documented at
	http://developer.netscape.com/tech/directory/perldap_docs/Conn.html
	http://developer.netscape.com/tech/directory/perldap_docs/Entry.html

# python

'''PerLDAP-like interface to the Python LDAP library
'''

class Conn:
	def __init__(self, host, port = str(_ldap.PORT), 
			bind = '', pswd = '', cert = ldap.AUTH_SIMPLE):
		self.host, self.port, self.binf = host, port, bind
		self._l = _ldap.open(host, int(port))
		self._l.bind_s(bind, pswd, cert)
	def search(self, base, scope, pattern):
		'''search(base, scope, pattern) -> Entry'''
		self._context = self._l.search(scope, pattern)
		return self.nextEntry()
	def searchURL(self, url):
		'''searchURL(url) -> Entry'''
	def nextEntry(self):
		'''nextEntry() -> Entry'''
		ret = self._l.result(self._context)
		if ret[0] == _ldap.RES_SEARCH_RESULT:
			del self._context
			return None
		assert ret[0] == _ldap.RES_SEARCH_ENTRY
		return Entry(ret[1])
	def update(self, entry):
		'''update(entry) -> int'''
	def add(self, entry):
		'''add(entry) -> int'''
	def delete(self, entry):
		'''delete(entry) -> int'''
	def close(self):
		'''close() -> Entry'''
	def modifyRDN(self, rdn, dn):
		'''modifyRDN(rdn, dn) -> Entry'''
	def isURL(self, url):
		'''isURL(url) -> int'''
	def getLD(self):
		'''getLD() -> fd int'''
	def getErrorCode(self):
		'''getErrorCode() -> int'''
	def getErrorString(self):
		'''getErrorString() -> string'''
	def printError(self):
		'''printError()'''
	def setRebindProc(self, func):
		'''setRebindProc(func)'''
	def setDefaultRebindProc(self):
		'''setDefaultRebindProc()'''

class Entry:
	def attrModified(self, attr):
		'''attrModified(attr)'''
	def isModified(self, attr):
		'''isModified(attr) -> int'''
	def remove(self, attr):
		'''remove(attr)'''
	def removeValue(self, attr, val):
		'''removeValue(attr, val)'''
	def addValue(self, attr, val):
		'''addValue(attr, val)'''
	def hasValue(self, attr, val, ignorecase = 0):
		'''hasValue(attr, val [, ignorecase]) -> int'''
	def matchValue(self, attr, ignorecase = 0):
		'''matchValue(attr [, ignorecase]) -> int'''
	def setDN(self, dn):
		'''setDN(dn)'''
	def getDN(self, dn):
		'''getDN(dn) -> string'''
	def size(self, attr):
		'''size(attr) -> int'''
	def exists(self, attr):
		'''exists(attr) -> int'''
	def printLDIF(self):
		'''printLDIF(self)'''
	def __getitem__(self, attr):
		pass
	def __setitem__(self, attr, value):
		pass
-- 
David Leonard                           David.Leonard at csee.uq.edu.au
Dept of Comp. Sci. and Elec. Engg   _   Room:78-640  Ph:+61 7 336 51187
The University of Queensland       |+|  http://www.csee.uq.edu.au/~leonard/
QLD 4072  AUSTRALIA               ~` '~ E2A24DC6446E5779D7AFC41AA04E6401

Curses! - Mojo Jojo





More information about the python-ldap mailing list