You are looking at historical revision 39572 of this page. It may differ significantly from its current revision.

Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

ldif-sexpr

Read/write LDIF, LDAP search strings and related data formats. (RFCs 2849, 4514, 2254)

Requirements

Irregex, ports, uri-common, base64.

API

[procedure] (ldif-dn LDIF) -> *

Returns the distinguished name (as S-expression) from LDIF object.

[procedure] (ldif-attributes LDIF) -> *

Returns the attributes (as list of S-expression) from LDIF object.

[procedure] (make-ldif DN ATTRIBUTES) -> LDIF

Create an ldif record from DN and ATTRIBUTES.

[procedure] (read [PORT])

Reads a LDIF record from PORT (default: current-input-port). Returns the ldif record or an eof-object.

[procedure] (write LDIF [PORT])

Writes the LDIF object to PORT (default: current-output-port).

[procedure] (rfc4514-read STRING) -> SEXPR

Parse STRING as RDN.

[procedure] (rfc4514-write SEXPR [PORT])

Write SEXPR as RDN.

[procedure] (write-ldap-filter OBJ [PORT])

Write OBJ as LDAP filter (RFC 2254) to PORT (default current-output-port).

[procedure] (ldap-filter-string OBJ) -> STRING

Returns a string with the output of write-ldap-filter applied to OBJ.

Examples

(use (prefix ldif-sexpr ldif:))

(assert (equal? (ldif:ldif-attributes (with-input-from-string "dn: CN=foobar\nfoo: bar" ldif:read))
	 '(("foo" "bar"))))


(assert (equal? (ldif:ldap-filter-string
		 '(and (exists name) (= foo "bar")))
		"(&(name=*)(foo=bar))"))

About this egg

Author

Jörg F. Wittenberger

Source Code

The ldif-sexpr egg repository is maintained on github.

Version History

Version 0.1: Initial release.

License

BSD