File Coverage

blib/lib/Archive/Peek/Zip.pm
Criterion Covered Total %
statement 35 35 100.0
branch 5 6 83.3
condition n/a
subroutine 7 7 100.0
pod 2 3 66.6
total 49 51 96.0


line stmt bran cond sub pod time code
1             package Archive::Peek::Zip;
2 1     1   7 use Moo;
  1         2  
  1         11  
3 1     1   321 use Carp qw(confess);
  1         2  
  1         61  
4 1     1   687 use Archive::Zip qw(AZ_OK);
  1         61262  
  1         56  
5 1     1   615 use Archive::Zip::MemberRead;
  1         1476  
  1         300  
6             extends 'Archive::Peek';
7              
8             sub zip {
9 3     3 0 7 my $self = shift;
10 3         17 my $filename = $self->filename;
11 3         21 my $zip = Archive::Zip->new();
12 3 100       121 unless ( $zip->read( $filename->stringify ) == AZ_OK ) {
13 1         620 confess("Error reading $filename");
14             }
15 2         8966 return $zip;
16             }
17              
18             sub files {
19 2     2 1 510 my $self = shift;
20 2         9 my $zip = $self->zip;
21              
22 1         5 my @members = $zip->members();
23 1         10 my @files = sort map { $_->fileName } grep { !$_->isDirectory } @members;
  4         33  
  8         53  
24 1         41 return @files;
25             }
26              
27             sub file {
28 1     1 1 5 my ( $self, $filename ) = @_;
29 1         3 my $zip = $self->zip;
30              
31 1         12 my $fh = Archive::Zip::MemberRead->new( $zip, $filename );
32 1         1161 my $file = '';
33 1         3 while (1) {
34 2         10 my $read = $fh->read( my $buffer, 1024 );
35 2 50       324 die "FATAL ERROR reading my secrets !\n" if ( !defined($read) );
36 2 100       8 last if ( !$read );
37 1         4 $file .= $buffer;
38             }
39 1         28 return $file;
40             }
41              
42             1;