File Coverage

blib/lib/HTTP/OAI/Identify.pm
Criterion Covered Total %
statement 44 48 91.6
branch 17 20 85.0
condition 7 12 58.3
subroutine 14 15 93.3
pod 11 13 84.6
total 93 108 86.1


line stmt bran cond sub pod time code
1             package HTTP::OAI::Identify;
2              
3             @ISA = qw( HTTP::OAI::Verb );
4              
5 11     11   65 use strict;
  11         19  
  11         429  
6              
7             our $VERSION = '4.12';
8              
9 11     11   3968 use HTTP::OAI::SAXHandler qw( :SAX );
  11         25  
  11         7868  
10              
11 7     7 1 248 sub adminEmail { shift->_elem('adminEmail',@_) }
12 28     28 1 16786 sub baseURL { shift->_elem('baseURL',@_) }
13 1     1 1 4 sub compression { shift->_multi('compression',@_) }
14 2     2 0 162 sub deletedRecord { shift->_elem('deletedRecord',@_) }
15 9     9 1 27 sub description { shift->_multi('description',@_) }
16 1     1 1 22 sub earliestDatestamp { shift->_elem('earliestDatestamp',@_) }
17 2     2 1 167 sub granularity { shift->_elem('granularity',@_) }
18 12     12 1 69 sub protocolVersion { shift->_elem('protocolVersion',@_) }
19 5     5 1 220 sub repositoryName { shift->_elem('repositoryName',@_) }
20              
21             sub next {
22 0     0 1 0 my $self = shift;
23 0         0 return shift @{$self->{description}};
  0         0  
24             }
25              
26             sub generate_body
27             {
28 1     1 0 3 my( $self, $driver ) = @_;
29              
30 1         3 for(qw( repositoryName baseURL protocolVersion adminEmail earliestDatestamp deletedRecord granularity compression ))
31             {
32 8         68 foreach my $value ($self->$_)
33             {
34 7         58 $driver->data_element( $_, $value );
35             }
36             }
37              
38 1         6 for($self->description) {
39 2         21 $_->generate( $driver );
40             }
41             }
42              
43             sub start_element {
44 64     64 1 441 my ($self,$hash,$r) = @_;
45 64         123 my $elem = lc($hash->{LocalName});
46 64 100 66     129 if( $elem eq 'description' && !$self->{"in_$elem"} ) {
47 4         26 $self->set_handler(my $desc = HTTP::OAI::Metadata->new);
48 4         59 $self->description([$self->description, $desc]);
49 4         22 $self->{"in_$elem"} = $hash->{Depth};
50             }
51 64         122 $self->SUPER::start_element($hash,$r);
52             }
53              
54             sub end_element {
55 64     64 1 399 my ($self,$hash,$r) = @_;
56 64         87 my $elem = $hash->{LocalName};
57 64         79 my $text = $hash->{Text};
58 64 50       104 if( defined $text )
59             {
60 64         114 $text =~ s/^\s+//;
61 64         109 $text =~ s/\s+$//;
62             }
63 64         137 $self->SUPER::end_element($hash,$r);
64 64 100 66     560 if( defined($self->get_handler) ) {
    100          
    50          
    100          
    100          
    100          
65 32 100 66     268 if( $elem eq 'description' && $self->{"in_$elem"} == $hash->{Depth} ) {
66 4         14 $self->set_handler( undef );
67 4         66 $self->{"in_$elem"} = 0;
68             }
69             } elsif( $elem eq 'adminEmail' ) {
70 4         36 $self->adminEmail($text);
71             } elsif( $elem eq 'compression' ) {
72 0         0 $self->compression($text);
73             } elsif( $elem eq 'baseURL' ) {
74 4         57 $self->baseURL($text);
75             } elsif( $elem eq 'protocolVersion' ) {
76 4 50 33     53 $text = '2.0' if $text =~ /\D/ or $text < 2.0;
77 4         12 $self->protocolVersion($text);
78             } elsif( defined($text) && length($text) ) {
79 16         247 $self->_elem($elem,$text);
80             }
81             }
82              
83             1;
84              
85             __END__