File Coverage

blib/lib/WWW/GoKGS/Scraper.pm
Criterion Covered Total %
statement 31 38 81.5
branch 3 6 50.0
condition 2 3 66.6
subroutine 10 14 71.4
pod 6 7 85.7
total 52 68 76.4


line stmt bran cond sub pod time code
1             package WWW::GoKGS::Scraper;
2 9     9   8693 use strict;
  9         22  
  9         315  
3 9     9   49 use warnings;
  9         18  
  9         256  
4 9     9   51 use Carp qw/croak/;
  9         16  
  9         605  
5 9     9   867 use URI;
  9         5000  
  9         5207  
6              
7             sub base_uri {
8 0     0 1 0 croak 'call to abstract method ', __PACKAGE__, '::base_uri';
9             }
10              
11             sub build_uri {
12 70     70 1 200 my ( $class, @query ) = @_;
13 70         381 my $uri = URI->new( $class->base_uri );
14 70 50       132140 $uri->query_form( @query ) if @query;
15 70         316 $uri;
16             }
17              
18             sub new {
19 7     7 1 8 my $class = shift;
20 7 50       25 my %args = @_ == 1 ? %{$_[0]} : @_;
  0         0  
21 7         15 my $self = bless {}, $class;
22              
23 7         34 $self->init( \%args );
24              
25 7         41 $self;
26             }
27              
28             sub init {
29 7     7 0 9 my ( $self, $args ) = @_;
30              
31 7         9 for my $method (qw/user_agent _tree_builder_class/) {
32 14 50       190 $self->$method( $args->{$method} ) if exists $args->{$method};
33             }
34              
35 7         11 return;
36             }
37              
38             sub _scraper {
39 14     14   17 my $self = shift;
40 14   66     96 $self->{_scraper} ||= $self->__build_scraper;
41             }
42              
43             sub __build_scraper {
44 0     0   0 croak 'call to abstract method ', __PACKAGE__, '::__build_scraper';
45             }
46              
47             sub _tree_builder_class {
48 7     7   12 my ( $self, @args ) = @_;
49 7         12 $self->_scraper->_tree_builder_class( @args );
50             }
51              
52             sub user_agent {
53 7     7 1 12 my ( $self, @args ) = @_;
54 7         36 $self->_scraper->user_agent( @args );
55             }
56              
57             sub scrape {
58 0     0 1   my ( $self, @args ) = @_;
59 0           $self->_scraper->scrape( @args );
60             }
61              
62             sub query {
63 0     0 1   my ( $self, @query ) = @_;
64 0           $self->scrape( ref($self)->build_uri(@query) );
65             }
66              
67             1;
68              
69             __END__