File Coverage

blib/lib/Geo/Details.pm
Criterion Covered Total %
statement 14 44 31.8
branch 1 2 50.0
condition 1 2 50.0
subroutine 4 30 13.3
pod 27 27 100.0
total 47 105 44.7


line stmt bran cond sub pod time code
1             package Geo::Details;
2              
3 2     2   32 use 5.006;
  2         6  
4 2     2   12 use strict;
  2         2  
  2         47  
5 2     2   7 use warnings;
  2         4  
  2         1122  
6              
7             sub new {
8 1     1 1 3 my $class = shift;
9 1         3 my $data = shift;
10 1   50     4 my $key = shift // '';
11              
12             # If $data is a hash reference, directly bless it into the class and return.
13 1 50       4 if ( ref($data) eq 'HASH' ) {
14 1         4 bless $data, $class;
15 1         8 return $data;
16             }
17              
18             # If $data is a plain string, create a new hash reference and set the specified key to the string value.
19             # Use the provided key or default to ''.
20 0           my $self = { $key => $data };
21 0           bless $self, $class;
22 0           return $self;
23             }
24              
25             sub TO_JSON {
26 0     0 1   my ($self) = @_;
27              
28             # Return a copy of the object as a hash reference for JSON encoding
29 0           return {%$self};
30             }
31              
32             sub abuse {
33 0     0 1   return $_[0]->{abuse};
34             }
35              
36             sub ip {
37 0     0 1   return $_[0]->{ip};
38             }
39              
40             sub org {
41 0     0 1   return $_[0]->{org};
42             }
43              
44             sub domains {
45 0     0 1   return $_[0]->{domains};
46             }
47              
48             sub privacy {
49 0     0 1   return $_[0]->{privacy};
50             }
51              
52             sub timezone {
53 0     0 1   return $_[0]->{timezone};
54             }
55              
56             sub hostname {
57 0     0 1   return $_[0]->{hostname};
58             }
59              
60             sub city {
61 0     0 1   return $_[0]->{city};
62             }
63              
64             sub region {
65 0     0 1   return $_[0]->{region};
66             }
67              
68             sub country {
69 0     0 1   return $_[0]->{country};
70             }
71              
72             sub country_name {
73 0     0 1   return $_[0]->{country_name};
74             }
75              
76             sub country_flag {
77 0     0 1   return $_[0]->{country_flag};
78             }
79              
80             sub country_flag_url {
81 0     0 1   return $_[0]->{country_flag_url};
82             }
83              
84             sub country_currency {
85 0     0 1   return $_[0]->{country_currency};
86             }
87              
88             sub continent {
89 0     0 1   return $_[0]->{continent};
90             }
91              
92             sub is_eu {
93 0     0 1   return $_[0]->{is_eu};
94             }
95              
96             sub loc {
97 0     0 1   return $_[0]->{loc};
98             }
99              
100             sub latitude {
101 0     0 1   return $_[0]->{latitude};
102             }
103              
104             sub longitude {
105 0     0 1   return $_[0]->{longitude};
106             }
107              
108             sub postal {
109 0     0 1   return $_[0]->{postal};
110             }
111              
112             sub asn {
113 0     0 1   return $_[0]->{asn};
114             }
115              
116             sub company {
117 0     0 1   return $_[0]->{company};
118             }
119              
120             sub carrier {
121 0     0 1   return $_[0]->{carrier};
122             }
123              
124             sub meta {
125 0     0 1   return $_[0]->{meta};
126             }
127              
128             sub all {
129 0     0 1   return $_[0];
130             }
131              
132             #-------------------------------------------------------------------------------
133              
134             1;
135             __END__