File Coverage

blib/lib/Webservice/Ipify/API.pm
Criterion Covered Total %
statement 27 34 79.4
branch 0 2 0.0
condition n/a
subroutine 9 10 90.0
pod 0 1 0.0
total 36 47 76.6


line stmt bran cond sub pod time code
1              
2             package Webservice::Ipify::API;
3              
4              
5 1     1   402789 use strict;
  1         2  
  1         35  
6 1     1   3 use warnings;
  1         2  
  1         62  
7              
8 1     1   507 use Feature::Compat::Class;
  1         433  
  1         4  
9 1     1   532 use Feature::Compat::Try;
  1         377  
  1         5  
10 1     1   73 use feature 'signatures';
  1         2  
  1         21  
11 1     1   3 no warnings 'experimental::signatures';
  1         2  
  1         50  
12              
13             our $VERSION = '1.005';
14              
15              
16             class Webservice::Ipify::API 1.004;
17              
18 1     1   658 use HTTP::Tiny;
  1         50570  
  1         55  
19 1     1   12 use JSON::PP;
  1         2  
  1         86  
20 1     1   5 use Carp;
  1         2  
  1         273  
21              
22             my $ua = HTTP::Tiny->new(timeout => 7);
23              
24              
25             method get_ipv4(){
26             return fetch('https://api4.ipify.org');
27             }
28              
29             method get_ipv6(){
30             return fetch('https://api6.ipify.org');
31             }
32              
33             method get(){
34             return fetch('https://api64.ipify.org');
35             }
36              
37 0     0 0   sub fetch($url){
  0            
  0            
38 0           my $response = $ua->get($url);
39             # croak on errors with nice error messages
40 0 0         if( !$response->{success} ){
41 0           croak $response->{status}." ".$response->{content} ;
42             }
43              
44 0           return $response->{content};
45             }
46              
47             1;
48              
49             __END__