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