File Coverage

blib/lib/Webservice/Judobase/General.pm
Criterion Covered Total %
statement 21 50 42.0
branch 0 10 0.0
condition n/a
subroutine 7 10 70.0
pod 3 3 100.0
total 31 73 42.4


line stmt bran cond sub pod time code
1 1     1   6 use strict;
  1         1  
  1         25  
2 1     1   9 use warnings;
  1         2  
  1         35  
3              
4             $Webservice::Judobase::General::VERSION = '0.08';
5             # VERSION
6              
7             use Moo;
8 1     1   5 use HTTP::Request;
  1         1  
  1         4  
9 1     1   282 use JSON::Tiny 'decode_json';
  1         2  
  1         30  
10 1     1   5 use LWP::UserAgent;
  1         2  
  1         33  
11 1     1   5  
  1         1  
  1         24  
12             use namespace::clean;
13 1     1   5  
  1         2  
  1         10  
14             has 'ua' => (
15             is => 'ro',
16             required => 1,
17             );
18              
19             has 'url' => (
20             is => 'ro',
21             required => 1,
22             );
23              
24             my ( $self, %args ) = @_;
25             return { error => 'id parameter is required' } unless defined $args{id};
26 0     0 1    
27 0 0         my $url
28             = $self->url
29             . '?params[action]=general.get_one'
30             . '&params[module]=competition'
31             . '&params[id]='
32             . $args{id};
33              
34 0           my $request = HTTP::Request->new( GET => $url );
35              
36 0           my $response = $self->ua->request($request);
37              
38 0           return decode_json $response->content
39             if $response->code == 200;
40 0 0          
41             return { error => 'Error retreiving competitor info' };
42             }
43 0            
44             my $self = shift;
45              
46             my $url
47 0     0 1   = $self->url
48             . '?params[action]=competition.get_list'
49 0           . '&params[limit]=9999'
50             . '&params[sort]=-1';
51              
52             my $request = HTTP::Request->new( GET => $url );
53              
54             my $response = $self->ua->request($request);
55 0            
56             return decode_json $response->content
57 0           if $response->code == 200;
58              
59 0 0         return { error => 'Error retreiving competitions info' };
60             }
61              
62 0           my ( $self, %args ) = @_;
63             return { error => 'event_id parameter is required' }
64             unless defined $args{event_id};
65              
66 0     0 1   my $url
67             = $self->url
68 0 0         . '?params[action]=competition.competitors'
69             . '&params[id_competition]='
70             . $args{event_id};
71              
72             my $request = HTTP::Request->new( GET => $url );
73              
74 0           my $response = $self->ua->request($request);
75              
76 0           my @competitors = ();
77             if ( $response->code == 200 ) {
78 0           my $info = decode_json $response->content;
79              
80 0           for my $gender ( values %{ $info->{categories} } ) {
81 0 0         for my $cat ( values %$gender ) {
82 0           for my $person ( values %{ $cat->{persons} } ) {
83             push @competitors, $person;
84 0           }
  0            
85 0           }
86 0           }
  0            
87 0            
88             return \@competitors;
89             }
90             else {
91             return { error => 'Error retreiving competitors info' };
92 0           }
93             }
94              
95 0           1;