use ldap3::adapters::EntriesOnly;
use ldap3::parse_refs;
use ldap3::result::Result;
use ldap3::{LdapConnAsync, Scope, SearchEntry};
#[tokio::main]
async fn main() -> Result<()> {
let (conn, mut ldap) = LdapConnAsync::new("ldap://localhost:2389").await?;
ldap3::drive!(conn);
println!("--- entries only");
let mut search = ldap
.streaming_search_with(
EntriesOnly::new(),
"dc=example,dc=org",
Scope::OneLevel,
"(objectClass=*)",
vec!["*"],
)
.await?;
while let Some(entry) = search.next().await? {
let entry = SearchEntry::construct(entry);
println!("{:?}", entry);
}
let res = search.finish().await.success()?;
println!("{:?}", res);
println!("--- all objects");
let mut search = ldap
.streaming_search(
"dc=example,dc=org",
Scope::OneLevel,
"(objectClass=*)",
vec!["*"],
)
.await?;
while let Some(entry) = search.next().await? {
if entry.is_ref() {
println!("refs: {:?}", parse_refs(entry.0));
} else {
let entry = SearchEntry::construct(entry);
println!("{:?}", entry);
}
}
let res = search.finish().await.success()?;
println!("{:?}", res);
Ok(ldap.unbind().await?)
}