File Coverage

blib/lib/MetaCPAN/API/Autocomplete.pm
Criterion Covered Total %
statement 28 29 96.5
branch 9 10 90.0
condition 5 9 55.5
subroutine 5 5 100.0
pod 1 1 100.0
total 48 54 88.8


line stmt bran cond sub pod time code
1 17     17   158249 use strict;
  17         56  
  17         717  
2 17     17   88 use warnings;
  17         36  
  17         1498  
3             package MetaCPAN::API::Autocomplete;
4              
5             our $VERSION = '0.52';
6              
7 17     17   100 use Carp;
  17         32  
  17         1203  
8 17     17   607 use Moo::Role;
  17         12322  
  17         109  
9              
10             # /search/autocomplete?q={search}
11             sub autocomplete {
12 4     4 1 2872 my $self = shift;
13 4 100       18 my %opts = @_ ? @_ : ();
14 4         8 my $url = '';
15              
16 4         8 my $error = "You have to provide a search term";
17 4         9 my $size_error = "The size has to be between 0 and 100";
18              
19 4 100       160 %opts or croak $error;
20              
21             croak $error
22 3 100 66     110 unless $opts{search} && ref $opts{search} eq 'HASH';
23              
24 2         4 my %extra_opts;
25              
26 2 50       9 if ( defined ( my $term = $opts{search}->{query} ) ) {
27 2         4 $url = 'search/autocomplete';
28 2         5 $extra_opts{q} = $term;
29              
30 2         6 my $size = $opts{search}->{size};
31 2 100 33     14 if ( defined $size && $size >= 0 && $size <= 100 ) {
      66        
32 1         3 $extra_opts{size} = $size;
33             } else {
34 1         181 croak $size_error;
35             }
36             } else {
37 0         0 croak $error;
38             }
39              
40 1         6 return $self->fetch( $url, %extra_opts );
41             }
42              
43             1;
44              
45             __END__