File Coverage

blib/lib/Perinci/Object/EnvResultMulti.pm
Criterion Covered Total %
statement 42 42 100.0
branch 6 6 100.0
condition 3 6 50.0
subroutine 6 6 100.0
pod 2 2 100.0
total 59 62 95.1


line stmt bran cond sub pod time code
1             package Perinci::Object::EnvResultMulti;
2              
3             our $DATE = '2017-02-03'; # DATE
4             our $VERSION = '0.30'; # VERSION
5              
6 1     1   17 use 5.010;
  1         2  
7 1     1   4 use strict;
  1         1  
  1         20  
8 1     1   3 use warnings;
  1         1  
  1         31  
9              
10 1     1   370 use parent qw(Perinci::Object::EnvResult);
  1         243  
  1         5  
11              
12             sub new {
13 5     5 1 6 my ($class, $res) = @_;
14 5   50     23 $res //= [200, "Success/no items"];
15 5         5 my $obj = \$res;
16 5         23 bless $obj, $class;
17             }
18              
19             sub add_result {
20 9     9 1 1744 my ($self, $status, $message, $extra) = @_;
21 9         8 my $num_ok = 0;
22 9         5 my $num_nok = 0;
23              
24 9         6 push @{ ${$self}->[3]{results} },
  9         28  
25 9   50     8 {status=>$status, message=>$message, %{ $extra // {} }};
  9         33  
26 9   50     10 for (@{ ${$self}->[3]{results} // [] }) {
  9         5  
  9         22  
27 15 100       40 if ($_->{status} =~ /\A(2|304)/) {
28 9         10 $num_ok++;
29             } else {
30 6         6 $num_nok++;
31             }
32             }
33 9 100       15 if ($num_ok) {
34 6 100       7 if ($num_nok) {
35 2         2 ${$self}->[0] = 207;
  2         3  
36 2         2 ${$self}->[1] = "Partial success";
  2         4  
37             } else {
38 4         3 ${$self}->[0] = 200;
  4         3  
39 4         4 ${$self}->[1] = "All success";
  4         6  
40             }
41             } else {
42 3         1 ${$self}->[0] = $status;
  3         4  
43 3         3 ${$self}->[1] = $message;
  3         5  
44             }
45             }
46              
47             1;
48             # ABSTRACT: Represent enveloped result (multistatus)
49              
50             __END__