File Coverage

blib/lib/Mojolicious/Plugin/AssetPack/Handler/Http.pm
Criterion Covered Total %
statement 26 26 100.0
branch 4 10 40.0
condition 3 7 42.8
subroutine 5 5 100.0
pod 1 1 100.0
total 39 49 79.5


line stmt bran cond sub pod time code
1             package Mojolicious::Plugin::AssetPack::Handler::Http;
2 1     1   414 use Mojo::Base -base;
  1         1  
  1         6  
3 1     1   146 use Mojolicious::Types;
  1         2  
  1         8  
4 1     1   18 use Mojolicious::Plugin::AssetPack::Asset;
  1         2  
  1         6  
5 1   50 1   31 use constant DEBUG => $ENV{MOJO_ASSETPACK_DEBUG} || 0;
  1         1  
  1         368  
6              
7             sub asset_for {
8 1     1 1 14 my ($self, $url, $assetpack) = @_;
9 1         1 my $name = do { local $_ = "$url"; s![^\w-]!_!g; $_ };
  1         29  
  1         155  
  1         3  
10 1         1 my ($asset, $e, $tx, $ext);
11              
12             # already downloaded
13 1 50       33 return $asset if $asset = $assetpack->_packed(qr{^$name\.\w+$});
14              
15 1         6 $tx = $assetpack->ua->get($url);
16 1   50     11483 $ext = Mojolicious::Types->new->detect($tx->res->headers->content_type // 'text/plain');
17 1 50       273 die "Asset $url could not be fetched: $e->{message}" if $e = $tx->error;
18              
19 1 50       18 $ext = $ext->[0] if ref $ext;
20 1 0 33     8 $ext = $tx->req->url->path =~ m!\.(\w+)$! ? $1 : 'txt' if !$ext or $ext eq 'bin';
    50          
21 1         7 $assetpack->_app->log->info("Asset $url was saved as $name.$ext");
22 1         216 $assetpack->_asset("$name.$ext")->spurt($tx->res->body);
23             }
24              
25             1;
26              
27             =encoding utf8
28              
29             =head1 NAME
30              
31             Mojolicious::Plugin::AssetPack::Handler::Http - DEPRECATED
32              
33             =head1 DESCRIPTION
34              
35             L will be DEPRECATED.
36              
37             =head1 ATTRIBUTES
38              
39             =head2 asset_for
40              
41             =head1 SEE ALSO
42              
43             L.
44              
45             =cut