blib/lib/WWW/Alexa/TrafficRank.pm | |||
---|---|---|---|
Criterion | Covered | Total | % |
statement | 25 | 41 | 60.9 |
branch | 5 | 20 | 25.0 |
condition | 1 | 2 | 50.0 |
subroutine | 6 | 7 | 85.7 |
pod | 3 | 3 | 100.0 |
total | 40 | 73 | 54.7 |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | package WWW::Alexa::TrafficRank; | ||||||
2 | |||||||
3 | 2 | 2 | 47712 | use strict; | |||
2 | 5 | ||||||
2 | 357 | ||||||
4 | 2 | 2 | 14 | use warnings; | |||
2 | 4 | ||||||
2 | 86 | ||||||
5 | 2 | 2 | 18 | use vars qw($VERSION); | |||
2 | 8 | ||||||
2 | 181 | ||||||
6 | 2 | 2 | 14798 | use LWP::UserAgent; | |||
2 | 217996 | ||||||
2 | 963 | ||||||
7 | |||||||
8 | $VERSION = '1.9'; | ||||||
9 | |||||||
10 | sub new | ||||||
11 | { | ||||||
12 | 1 | 1 | 1 | 22 | my $class = shift; | ||
13 | 1 | 4 | my %par = @_; | ||||
14 | 1 | 2 | my $self; | ||||
15 | |||||||
16 | 1 | 50 | 50 | 18 | $self->{ua} = LWP::UserAgent->new(agent => $par{agent} || 'Opera 10.0') or return; | ||
17 | 1 | 50 | 5008 | $self->{ua}->proxy('http', $par{proxy}) if $par{proxy}; | |||
18 | 1 | 50 | 5 | $self->{ua}->timeout($par{timeout}) if $par{timeout}; | |||
19 | |||||||
20 | 1 | 8 | bless ($self, $class); | ||||
21 | } | ||||||
22 | |||||||
23 | sub get | ||||||
24 | { | ||||||
25 | 1 | 1 | 1 | 7 | my ($self, $domain) = @_; | ||
26 | |||||||
27 | 1 | 50 | 4 | return unless defined $domain; | |||
28 | |||||||
29 | 1 | 12 | my $res = $self->{ua}->get("http://xml.alexa.com/data?cli=10&dat=nsa&url=$domain"); | ||||
30 | 1 | 50 | 475548 | return $res->status_line if !$res->is_success; | |||
31 | |||||||
32 | 1 | 33 | my ($rank) = $res->content =~ / | ||||
33 | |||||||
34 | 1 | 56 | return $rank; | ||||
35 | } | ||||||
36 | |||||||
37 | sub get_country_rank | ||||||
38 | { | ||||||
39 | 0 | 0 | 1 | my $self = shift; | |||
40 | 0 | my $par = { @_ }; | |||||
41 | |||||||
42 | 0 | 0 | return unless defined $par->{Domain}; | ||||
43 | 0 | 0 | return unless defined $par->{Country}; | ||||
44 | |||||||
45 | 0 | my $res = $self->{ua}->get("http://www.alexa.com/siteinfo/$par->{Domain}"); | |||||
46 | 0 | 0 | return $res->status_line if !$res->is_success; | ||||
47 | |||||||
48 | 0 | my $cont = $res->content; | |||||
49 | |||||||
50 | 0 | 0 | return 0 unless $cont =~ / (.+?) | ||||
51 | |||||||
52 | 0 | my $listdata = $1; | |||||
53 | |||||||
54 | 0 | while ($listdata =~ / (.+?)<\/div>/igs) {
|
|||||
55 | 0 | my $item = $1; $item =~ s/,//g; | |||||
0 | |||||||
56 | |||||||
57 | 0 | 0 | if ($item =~ /$par->{Country}/gs) { | ||||
58 | 0 | $item =~ / (\d+)/i; |
|||||
59 | |||||||
60 | 0 | return $1; | |||||
61 | } | ||||||
62 | } | ||||||
63 | |||||||
64 | 0 | return 0; | |||||
65 | } | ||||||
66 | |||||||
67 | 1; | ||||||
68 | |||||||
69 | __END__ |