File Coverage

blib/lib/Module/CheckVersion/AuthorityScheme/darkpan.pm
Criterion Covered Total %
statement 20 32 62.5
branch 0 4 0.0
condition n/a
subroutine 7 8 87.5
pod 0 1 0.0
total 27 45 60.0


line stmt bran cond sub pod time code
1             package Module::CheckVersion::AuthorityScheme::darkpan;
2              
3 1     1   229526 use 5.010001;
  1         3  
4 1     1   4 use strict;
  1         2  
  1         26  
5 1     1   3 use warnings;
  1         2  
  1         55  
6              
7 1     1   737 use File::Temp 'tempfile';
  1         14053  
  1         60  
8 1     1   475 use File::Slurper 'write_binary';
  1         2882  
  1         77  
9 1     1   573 use HTTP::Tiny;
  1         35972  
  1         38  
10 1     1   411 use JSON::MaybeXS;
  1         6531  
  1         262  
11              
12             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
13             our $DATE = '2026-04-08'; # DATE
14             our $DIST = 'Module-CheckVersion'; # DIST
15             our $VERSION = '0.091'; # VERSION
16              
17             sub check_latest_version {
18 0     0 0   my ($mod, $authority_scheme, $authority_content) = @_;
19              
20 0           my $url = "$authority_content/modules/02packages.details.txt.gz";
21 0           my $res = HTTP::Tiny->new->get($url);
22             #use DD; dd $res;
23 0 0         return [$res->{status}, "Retrieving $url failed: $res->{reason}"] unless $res->{success};
24              
25 0           my ($tempfh, $tempfilename) = tempfile('XXXXXXXX', SUFFIX => '.gz', TMPDIR => 1);
26             #print "D:tempfilename=$tempfilename\n";
27 0           write_binary($tempfilename, $res->{content});
28              
29 0           require Parse::CPAN::Packages;
30 0           my $pcp = Parse::CPAN::Packages->new($tempfilename);
31 0           my $m = $pcp->package($mod);
32 0 0         unless ($m) {
33 0           return [404, "No such module '$mod' in $url"];
34             }
35              
36 0           [200, "OK", $m->version];
37             }
38              
39             1;
40             # ABSTRACT: Handler for the "darkpan" authority scheme
41              
42             __END__