I-D: The Java LDAP Application Program Interface
David Leonard
david.leonard at csee.uq.edu.au
Wed Feb 7 01:03:04 CET 2001
On Tue, 6 Feb 2001, Michael Ströder typed thusly:
> For those of you who are interested in designing/implementing a new
> class API for python-ldap 2.0 the new Internet Draft
>
> "The Java LDAP Application Program Interface"
>
> http://www.ietf.org/internet-drafts/draft-ietf-ldapext-ldap-java-api-13.txt
>
> might be interesting. It looks more suitable for Python than going
> with the C-oriented LDAPEXT-API. Anyone interested in implementing
> that?
well it looks nice. has anyone got any favourite bits?
i like the decent methods on LDAPConnection.
I think that if we take the java api, and convert all the Javaisms
to Pythonisms we could even submit "our own" RFC draft. :)
A lot in that java api is 'over the top' in terms of object-orientedness.
Here are some:
* do we really need a LDAPDN class? Isn't python's string enough?
(same with LDAPUrl - could be done in the urllib style)
* AttributeSet is just a list
* can we ignore/hide LDAPExtendedOperation/Response/Listener?
the java api looks overly complex. after whittling it back a bit, i think
a nice pythonesqe api could be developed.
Here's some of the examples converted from Java to API
#-- Example 9.1
import LDAP
ld = LDAP.Connection()
try:
ld.connect("localhost", 389)
ld.bind("", "")
MY_FILTER = "sn=Jensen"
MY_SEARCHBASE = "o=Ace Industry, c=US"
cons = ld.getSearchConstraints()
cons.setBatchSize(1)
res = ld.search(MY_SEARCHBASE, ld.SCOPE_ONE, MY_FILTER, None, 0, cons)
for findEntry in res:
print findEntry.getDN()
findAttrs = findEntry.getAttributeSet()
enumAttrs = findAttrs.getAttributes()
print "Attributes:"
for anAttr in enumAttrs:
print `anAttr.getName()`
for aVal in anAttr.getStringValues()
print `aVal`
except LDAP.Exception:
print "Error!"
if ld.isConnected():
ld.disconnect()
#-- example 9.2
import LDAP
ld = LDAP.Connection()
try:
MY_HOST = "localhost"
MY_PORT = 389
ld.connect(MY_HOST, MY_PORT)
MY_NAME = "cn=Barbara Jensen,o=Ace Industry,c=US"
MY_PASSWORD = "MysteryLady"
ld.bind(MY_NAME, MY_PASSWORD)
attrEmail = LDAP.Attribute("mail", "babs at ace.com")
mod = LDAP.Modification(LDAP.REPLACE, attrEmail)
ld.modify(MY_NAME, mod)
print "Entry modified"
except LDAP.Exception:
print "Error!"
if ld.isConnected():
ld.disconnect()
Feel free to convert some more to see if you like the feel of it, or
if it reminds you of a way that its done in another python builtin/library.
d
--
David Leonard David.Leonard at dstc.edu.au
CRC For Distributed Systems Technology Room:78-632 Ph:+61 7 336 58358
The University of Queensland http://www.dstc.edu.au/
QLD 4072 AUSTRALIA B73CD65FBEF4C089B79A8EBADF1A932F13EA0FC8
More information about the python-ldap
mailing list