Net::LDAP::DSML(3)
π Net::LDAP::DSML β A DSML Writer for Net::LDAP π
okay so bestie, this is the manual for Net::LDAP::DSML(3) and it's literally a DSML Writer for Net::LDAP and it's giving very niche but very iconic. let's get into it π«Ά
β¨ SYNOPSIS β¨
bestie, here's the whole vibe for a directory entry:
use Net::LDAP;
use Net::LDAP::DSML;
use IO::File;
my $server = "localhost";
my $file = "testdsml.xml";
my $ldap = Net::LDAP->new($server);
$ldap->bind();
#
# For file i/o
#
my $file = "testdsml.xml";
my $io = IO::File->new($file,"w")
or die ("failed to open $file as filehandle.$!\n");
my $dsml = Net::LDAP::DSML->new(output => $io, pretty_print => 1 )
or die ("DSML object creation problem using an output file.\n");
# OR
#
# For file i/o
#
open (IO,">$file") or die("failed to open $file.$!");
my $dsml = Net::LDAP::DSML->new(output => *IO, pretty_print => 1)
or die ("DSML object creation problem using an output file.\n");
# OR
#
# For array usage.
# Pass a reference to an array.
#
my @data = ();
$dsml = Net::LDAP::DSML->new(output => \@data, pretty_print => 1)
or die ("DSML object creation problem using an output array.\n");
my $mesg = $ldap->search(
base => 'o=airius.com',
scope => 'sub',
filter => 'ou=accounting',
callback => sub {
my ($mesg,$entry) =@_;
$dsml->write_entry($entry)
if (ref $entry eq 'Net::LDAP::Entry');
}
);
die ("search failed with ",$mesg->code(),"\n") if $mesg->code();
and for directory schema? bestie, it's the same energy. a file or array can be used for output, but in the following example only an array will be used:
my $schema = $ldap->schema();
my @data = ();
my $dsml = Net::LDAP::DSML->new(output => \@data, pretty_print => 1 )
or die ("DSML object creation problem using an output array.\n");
$dsml->write_schema($schema);
print "Finished printing DSML\n";
πΈ DESCRIPTION πΈ
okay so Directory Service Markup Language (DSML) is the XML standard for representing directory service information in XML. it's literally the blueprint. π
at the moment this module only writes DSML entry and schema entities. reading DSML entities is a future project. so like, it's a work in progress, but she's serving what she needs to serve. β¨
eventually this module will be a full level 2 consumer and producer enabling you to give you full DSML conformance. currently this module has the ability to be a level 2 producer. the user must understand the his/her directory server will determine the consumer and producer level they can achieve. iykyk.
to determine conformance, it is useful to divide DSML documents into four types:
- Documents containing no directory schema nor any references to an external schema.
- Documents containing no directory schema but containing at least one reference to an external schema.
- Documents containing only a directory schema.
- Documents containing both a directory schema and entries.
a producer of DSML must be able to produce documents of type 1. a producer of DSML may, in addition, be able to produce documents of types 2 through 4.
a producer that can produce documents of type 1 is said to be a level 1 producer. a producer than can produce documents of all four types is said to be a level 2 producer. periodt. π
π CALLBACKS π
the module uses callbacks to improve performance (at least the appearance of improving performance ;) and to reduce the amount of memory required to parse large DSML files. every time a single entry or schema is processed we pass the Net::LDAP object (either an Entry or Schema object) to the callback routine. so like, it's efficient and cute. π¦
π₯ CONSTRUCTOR π₯
new ()
creates a new Net::LDAP::DSML object. there are 2 options to this method.
"output"is a reference to either a file handle that has already been opened or to an array."pretty_print"is an option to print a new line at the end of each element sequence. it makes the reading of the XML output easier for a human.
Example:
my $dsml = Net::LDAP::DSML->new();
Prints xml data to standard out.
my $dsml = Net::LDAP::DSML->new(output => \@array);
my $dsml = Net::LDAP::DSML->new(output => *FILE);
Prints xml data to a file or array.
my $dsml = Net::LDAP::DSML->new(output => \@array, pretty_print => 1);
my $dsml = Net::LDAP::DSML->new(output => *FILE, pretty_print => 1);
Prints xml data to a file or array in pretty print style.
π METHODS π
start_dsml ()
Start a DSML file.
end_dsml ()
End a DSML file.
write_entry ( ENTRY )
Entry is a Net::LDAP::Entry object. The write method will parse the LDAP data in the Entry object and put it into DSML XML format.
Example:
my $entry = $mesg->entry();
$dsml->write_entry($entry);
write_schema ( SCHEMA )
Schema is a Net::LDAP::Schema object. The write_schema method will parse the LDAP data in the Schema object and put it into DSML XML format.
Example:
my $schema = $ldap->schema();
$dsml->write_schema($schema);
π AUTHOR π
Graham Barr gbarr@pobox.com
π¦ SEE ALSO π¦
Net::LDAP, XML::SAX::Base
π COPYRIGHT π
Copyright (c) 2002-2006 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
okay bestie, that's the whole page. this manual page is from perl v5.42.0, dated 2024-01-02, and it's literally iconic. no cap. πβ¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-ldap 0.68-160000.2.2 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms