File Coverage

blib/lib/Archive/Peek/Zip.pm
Criterion Covered Total %
statement 31 32 96.8
branch 4 6 66.6
condition n/a
subroutine 6 6 100.0
pod 2 3 66.6
total 43 47 91.4


line stmt bran cond sub pod time code
1             package Archive::Peek::Zip;
2 1     1   6 use Moose;
  1         2  
  1         8  
3 1     1   8852 use Archive::Zip qw(AZ_OK);
  1         64045  
  1         57  
4 1     1   961 use Archive::Zip::MemberRead;
  1         1478  
  1         326  
5             extends 'Archive::Peek';
6              
7             sub zip {
8 2     2 0 4 my $self = shift;
9 2         100 my $filename = $self->filename;
10 2         20 my $zip = Archive::Zip->new();
11 2 50       115 unless ( $zip->read( $filename->stringify ) == AZ_OK ) {
12 0         0 confess("Error reading $filename");
13             }
14 2         15729 return $zip;
15             }
16              
17             sub files {
18 1     1 1 641 my $self = shift;
19 1         5 my $zip = $self->zip;
20              
21 1         9 my @members = $zip->members();
22 1         9 my @files = sort map { $_->fileName } grep { !$_->isDirectory } @members;
  4         31  
  8         51  
23 1         60 return @files;
24             }
25              
26             sub file {
27 1     1 1 3 my ( $self, $filename ) = @_;
28 1         6 my $zip = $self->zip;
29              
30 1         35 my $fh = Archive::Zip::MemberRead->new( $zip, $filename );
31 1         957 my $file = '';
32 1         2 while (1) {
33 2         8 my $read = $fh->read( my $buffer, 1024 );
34 2 50       265 die "FATAL ERROR reading my secrets !\n" if ( !defined($read) );
35 2 100       6 last if ( !$read );
36 1         2 $file .= $buffer;
37             }
38 1         38 return $file;
39             }
40              
41             1;