App-Addex-AddressBook-LDAP

 view release on metacpan or  search on metacpan

lib/App/Addex/AddressBook/LDAP.pm  view on Meta::CPAN

use Modern::Perl;

package App::Addex::AddressBook::LDAP;
BEGIN {
  $App::Addex::AddressBook::LDAP::VERSION = '0.001';
}

# ABSTRACT: LDAP address book for App::Addex

use parent 'App::Addex::AddressBook';

use App::Addex::Entry;
use App::Addex::Entry::EmailAddress;
use Carp;
use Net::LDAP;
use URI;

sub new {
    my ($class, $arg) = @_;

    my $uri = URI->new($arg->{uri});

    my $self = bless {
        uri => $uri,
    } => $class;

    my $ldap = Net::LDAP->new(
        "$uri",
        raw     => qr/(?i:^jpegPhoto|;binary)/,
        onerror => 'die'
    ) or confess $@;
    $ldap->bind();
    $self->{ldap} = $ldap;

    return $self;
}

sub _entrify {
    my ($self, $entry) = @_;

    my @emails = map { App::Addex::Entry::EmailAddress->new($_) }
      $entry->get_value('mail');
    return unless @emails;

    return App::Addex::Entry->new(
        {
            name   => $entry->get_value('cn'),
            nick   => $entry->get_value('uid'),
            emails => \@emails,
        }
    );
}

sub entries {
    my ($self) = @_;

    my $mesg = $self->{ldap}->search(
        base   => $self->{uri}->dn,
        filter => $self->{uri}->filter,
        scope  => $self->{uri}->scope,
    );

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.097 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )