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   17 use strict;
  1         2  
  1         89  
4 1     1   9 use warnings;
  1         2  
  1         121  
5              
6             use overload
7 1         10 '""' => \&_stringify,
8 1     1   17 fallback => 1;
  1         3  
9              
10             sub new {
11 7     7 1 5063 my ($class, %args) = @_;
12             return bless {
13             status_code => $args{status_code} // 0,
14             code => $args{code} // '',
15 7   50     78 message => $args{message} // 'Unknown error',
      50        
      50        
16             }, $class;
17             }
18              
19             sub throw {
20 1     1 1 5 my ($class, %args) = @_;
21 1         63 die $class->new(%args);
22             }
23              
24 5     5 1 3712 sub status_code { return $_[0]->{status_code} }
25 1     1 1 9 sub code { return $_[0]->{code} }
26 3     3 1 638 sub message { return $_[0]->{message} }
27              
28             sub _stringify {
29 1     1   9 my ($self) = @_;
30 1         3 my $class = ref $self;
31 1 50       7 my $code = $self->{code} ? " [$self->{code}]" : '';
32 1         13 return "$class: $self->{status_code}$code $self->{message}";
33             }
34              
35             1;
36              
37             __END__