File Coverage

blib/lib/WWW/Yandex/TIC.pm
Criterion Covered Total %
statement 37 46 80.4
branch 4 10 40.0
condition n/a
subroutine 8 9 88.8
pod 3 4 75.0
total 52 69 75.3


[^<]+(?:
line stmt bran cond sub pod time code
1             package WWW::Yandex::TIC;
2              
3             # -*- perl -*-
4              
5 2     2   38225 use strict;
  2         5  
  2         80  
6 2     2   12 use warnings;
  2         4  
  2         69  
7              
8 2     2   12 use vars qw($VERSION);
  2         15  
  2         86  
9              
10 2     2   2858 use LWP::UserAgent;
  2         143194  
  2         87  
11 2     2   25 use HTTP::Headers;
  2         6  
  2         1821  
12              
13             # we try to parse yandex bar info
14             # on failure we must parse yandex catalog page
15              
16             $VERSION = '0.07';
17              
18             my $regexps = [
19             qr/(?is)

.*?[^<]+? &(?:#151|mdash); (\d+)/,

20             qr|(?is)

.*?[^<]+? 1(\d+).|, # zero -)

21             qr|(?is)
[^<]+){2}?
22             ];
23              
24             sub new {
25 1     1 1 14 my $class = shift;
26 1         3 my %par = @_;
27 1         2 my $self;
28            
29             # config overrided by parameters
30 1         11 my $ua = $self->{ua} = LWP::UserAgent->new;
31            
32 1         4083 my $proxy = delete $par{proxy};
33            
34 1         5 foreach my $k (keys %par) {
35 0         0 $ua->$k ($par{$k});
36             }
37            
38 1 50       5 if ($proxy) {
39             # support for old interface
40 0         0 $ua->proxy ('http', $proxy);
41             }
42            
43 1         6 bless($self, $class);
44             }
45              
46             sub user_agent {
47 0     0 1 0 shift->{ua};
48             }
49              
50             sub request_uri {
51 1     1 0 3 my ($self, $url) = @_;
52              
53 1         3 my $query = "http://search.yaca.yandex.ru/yca/cy/ch/$url/";
54              
55 1         3 return $query;
56             }
57              
58             sub get {
59 1     1 1 7 my ($self, $url) = @_;
60              
61 1         5 my $query = $self->request_uri ($url);
62              
63 1         10 my $resp = $self->{ua}->get($query);
64              
65 1 50       512879 if ($resp->is_success) {
66            
67 1         181 my $content = $resp->content;
68            
69 1         90 my $tic = undef;
70            
71 1         3 my $c = 0;
72            
73 1         4 foreach my $rx (@$regexps) {
74 3 50       132 if ($content =~ /$rx/) {
75 0         0 $tic = $1;
76 0         0 last;
77             }
78             }
79              
80 1 50       5 if (wantarray) {
81 1         6 return ($tic, $resp);
82             } else {
83 0           return $tic;
84             }
85              
86             } else {
87 0 0         if (wantarray) {
88 0           return (undef, $resp);
89             } else {
90 0           return;
91             }
92             }
93             }
94              
95             1;
96              
97             __END__