File: LDAP.pm

package info (click to toggle)
dmbt 0.1.3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 308 kB
  • ctags: 102
  • sloc: perl: 1,590; makefile: 74; python: 65
file content (94 lines) | stat: -rw-r--r-- 1,802 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package Debbugs::RemoteBTS::LDAP;

@ISA = qw(Debbugs::RemoteBTS);

use Net::LDAP;
use Debbugs::BugReport;

sub new {
  my $proto = shift;
  my $class = ref($proto) || $proto;
  my $self  = {};
  
  my $server = shift;
  my %opts = ();
  while (@_) {
    my($k,$v) = splice(@_,0,2);
    $opts{$k} = $v;
  }

  $self->{SERVER} = $server;
  $self->{PORT} = $opts{port};
  $self->{DN} = $opts{dn};

  $self->{LDAP} = undef;

  bless ($self, $class);
  return $self;
}

sub connect {
  my $self = shift;

  unless (defined $self->{LDAP}) {
    $self->{LDAP} = Net::LDAP->new($self->{SERVER}, 
				   'port' => $self->{PORT}
				  );
    return undef unless defined $self->{LDAP};
    $self->{LDAP}->bind();
  }

  return $self->{LDAP};
}

sub DESTROY {
  $self->{LDAP}->unbind if defined $self->{LDAP};
}

sub bugFromID {
  my $self = shift;
  my ($bugid) = @_;

  # Query LDAP server
  $self->connect or return undef;
  my $date = time;
  my $result = $self->{LDAP}->search(
				     base => $self->{DN},
				     filter => "(bugid=$bugid)",
				    );

  # Build and return BugReport object
  return _entryToBug ($result->pop_entry, $date);
}

sub packageBugs {
  my $self = shift;
  my ($package) = @_;

  # Query LDAP server
  $self->connect or return undef;
  my $date = time;
  my $result = $self->{LDAP}->search(
				     base => $self->{DN},
				     filter => "(package=$package)"
				    );

  # Build and return list of BugReport object
  my @reportlist = ();
  foreach my $entry ($result->entries) {
    push @reportlist, _entryToBug ($entry, $date);
  }
  return @reportlist;
}

sub _entryToBug {
  my ($entry, $date) = @_;
  my $bugreport = Debbugs::BugReport->new;

  $bugreport->init_from_LDAP_entry ($entry);
  $bugreport->{DMBTATTRIBS}->{fetchdate} = $date;

  return $bugreport;
}

TRUE;