File Coverage

blib/lib/MIME/Expander/Plugin/ApplicationGzip.pm
Criterion Covered Total %
statement 26 26 100.0
branch 3 6 50.0
condition 1 2 50.0
subroutine 6 6 100.0
pod 0 1 0.0
total 36 41 87.8


line stmt bran cond sub pod time code
1             package MIME::Expander::Plugin::ApplicationGzip;
2              
3 4     4   43633 use strict;
  4         9  
  4         397  
4 4     4   22 use warnings;
  4         7  
  4         131  
5 4     4   22 use vars qw($VERSION);
  4         207  
  4         285  
6             $VERSION = '0.01';
7              
8 4     4   1213 use parent qw(MIME::Expander::Plugin);
  4         292  
  4         29  
9             __PACKAGE__->mk_classdata('ACCEPT_TYPES' => [qw(
10             application/gzip
11             application/x-gzip
12             )]);
13              
14 4     4   4404 use IO::Uncompress::Gunzip;
  4         126153  
  4         914  
15              
16             sub expand {
17 6     6 0 12 my $self = shift;
18 6         12 my $contents = shift;
19 6         32 my $callback = shift;
20 6         12 my $c = 0;
21              
22 6 50       142 my $z = IO::Uncompress::Gunzip->new(
    50          
23             ref $contents eq 'SCALAR' ? $contents : \$contents
24             , Append => 1)
25             or die "gunzip failed: $IO::Uncompress::Gunzip::GunzipError";
26              
27 6         12320 my $buf;
28 6         25 1 while( 0 < $z->read($buf) );
29            
30 6   50     2756 my $h = $z->getHeaderInfo || {};
31 6 50       91 $callback->( \$buf, {
32             filename => $h->{Name},
33             } ) if( ref $callback eq 'CODE' );
34 6         12838 ++$c;
35              
36 6         88 return $c;
37             }
38              
39             1;
40             __END__