File Coverage

blib/lib/Apertur/SDK/Error.pm
Criterion Covered Total %
statement 20 20 100.0
branch 1 2 50.0
condition 3 6 50.0
subroutine 9 9 100.0
pod 5 5 100.0
total 38 42 90.4


line stmt bran cond sub pod time code
1             package Apertur::SDK::Error;
2              
3 1     1   10 use strict;
  1         3  
  1         43  
4 1     1   8 use warnings;
  1         2  
  1         87  
5              
6             use overload
7 1         9 '""' => \&_stringify,
8 1     1   4 fallback => 1;
  1         1  
9              
10             sub new {
11 7     7 1 3880 my ($class, %args) = @_;
12             return bless {
13             status_code => $args{status_code} // 0,
14             code => $args{code} // '',
15 7   50     58 message => $args{message} // 'Unknown error',
      50        
      50        
16             }, $class;
17             }
18              
19             sub throw {
20 1     1 1 3 my ($class, %args) = @_;
21 1         6 die $class->new(%args);
22             }
23              
24 5     5 1 2619 sub status_code { return $_[0]->{status_code} }
25 1     1 1 5 sub code { return $_[0]->{code} }
26 3     3 1 418 sub message { return $_[0]->{message} }
27              
28             sub _stringify {
29 1     1   8 my ($self) = @_;
30 1         2 my $class = ref $self;
31 1 50       5 my $code = $self->{code} ? " [$self->{code}]" : '';
32 1         11 return "$class: $self->{status_code}$code $self->{message}";
33             }
34              
35             1;
36              
37             __END__