File Coverage

blib/lib/Puncheur/Request.pm
Criterion Covered Total %
statement 26 48 54.1
branch 0 14 0.0
condition 2 12 16.6
subroutine 10 13 76.9
pod 2 8 25.0
total 40 95 42.1


line stmt bran cond sub pod time code
1             package Puncheur::Request;
2 4     4   1662 use strict;
  4         8  
  4         146  
3 4     4   23 use warnings;
  4         7  
  4         118  
4              
5 4     4   869 use parent 'Plack::Request::WithEncoding';
  4         273  
  4         32  
6 4     4   348875 use Carp ();
  4         12  
  4         65  
7 4     4   3479 use URI::QueryParam;
  4         3407  
  4         2047  
8              
9             sub uri {
10 1     1 1 1070 my $self = shift;
11              
12 1   33     18 $self->{uri} ||= $self->SUPER::uri;
13 1         8316 $self->{uri}->clone; # avoid destructive opearation
14             }
15              
16             sub base {
17 1     1 1 1124 my $self = shift;
18              
19 1   33     21 $self->{base} ||= $self->SUPER::base;
20 1         156 $self->{base}->clone; # avoid destructive operation
21             }
22              
23             # for backward compatible
24             sub body_parameters_raw {
25 0     0 0 0 shift->raw_body_parameters(@_);
26             }
27              
28             sub query_parameters_raw {
29 0     0 0 0 shift->raw_query_parameters(@_);
30             }
31              
32             sub parameters_raw {
33 1     1 0 376 shift->raw_parameters(@_);
34             }
35              
36             sub param_raw {
37 1     1 0 5367 shift->raw_param(@_);
38             }
39              
40             sub uri_with {
41 0     0 0 0 my( $self, $query, $behavior) = @_;
42 0 0       0 Carp::carp( 'No arguments passed to uri_with()' ) unless $query;
43              
44 0   0     0 my $append = ref $behavior eq 'HASH' && $behavior->{mode} && $behavior->{mode} eq 'append';
45 0 0       0 my @query = ref $query eq 'HASH' ? %$query : @$query;
46 0 0       0 @query = map { $_ && encodde_utf8($_) } @query;
  0         0  
47              
48 0         0 my $params = do {
49 0         0 my %params = %{ $self->uri->query_form_hash };
  0         0  
50              
51 0         0 while (my ($key, $val) = splice @query, 0, 2) {
52 0 0       0 if ( defined $val ) {
53 0 0 0     0 if ( $append && exists $params{$key} ) {
54 0         0 $params{$key} = [
55 0 0       0 (ref $params{$key} eq 'ARRAY' ? @{ $params{$key} } : $params{$key}),
    0          
56             (ref $val eq 'ARRAY' ? @$val : $val),
57             ];
58             }
59             else {
60 0         0 $params{$key} = $val;
61             }
62             }
63             else {
64             # If the param wasn't defined then we delete it.
65 0         0 delete( $params{$key} );
66             }
67             }
68 0         0 \%params;
69             };
70              
71 0         0 my $uri = $self->uri;
72 0         0 $uri->query_form($params);
73              
74 0         0 return $uri;
75             }
76              
77             sub capture_params {
78 1     1 0 2048 my ($self, @params) = @_;
79 1         2 (map {($_ => $self->parameters->get($_))} @params);
  2         24  
80             }
81              
82             1;