File Coverage

blib/lib/Opsview/RestAPI/Exception.pm
Criterion Covered Total %
statement 30 33 90.9
branch 1 2 50.0
condition n/a
subroutine 13 16 81.2
pod 8 8 100.0
total 52 59 88.1


line stmt bran cond sub pod time code
1 7     7   882 use 5.12.1;
  7         27  
2 7     7   40 use strict;
  7         15  
  7         146  
3 7     7   35 use warnings;
  7         14  
  7         834  
4              
5             package Opsview::RestAPI::Exception;
6             $Opsview::RestAPI::Exception::VERSION = '1.210250';
7             # ABSTRACT: Opsview::RestAPI Exception object
8              
9              
10             use overload
11 5     5   2349 bool => sub {1},
12 2     2   441 eq => sub { $_[0]->as_string },
13 0     0   0 '""' => sub { $_[0]->as_string },
14 7     7   91 "0+" => sub {1};
  7     0   18  
  7         69  
  0         0  
15              
16              
17             sub new {
18 8     8 1 5416 my ( $class, %args ) = @_;
19              
20 8         37 my @caller_keys = (
21             qw/ package filename line subroutine hasargs wantarray evaltext is_require /
22             );
23             #hints bitmask hinthash /
24              
25             # Build up the callstack to a max of 7 levels
26 8         21 my $i=0;
27 8         18 do {
28 56         359 my @caller = (caller($i++));
29 56 50       139 return unless(@caller);
30              
31 56         80 push( @{ $args{callstack} }, { map { $caller_keys[$_] => $caller[$_] } ( 0 .. $#caller_keys) } );
  56         137  
  448         1102  
32             } while ( $i < 7 );
33              
34 8         429 bless { %args }, $class;
35             }
36              
37              
38 5     5 1 20739 sub line { $_[0]->{callstack}[0]{line} }
39 2     2 1 6 sub path { $_[0]->{callstack}[0]{filename} }
40 3     3 1 24 sub filename { $_[0]->{callstack}[0]{filename} }
41 0     0 1 0 sub package { $_[0]->{callstack}[0]{package} }
42              
43              
44             sub message {
45 15     15 1 136 return $_[0]->{message};
46             }
47              
48              
49             sub http_code {
50 13     13 1 679 return $_[0]->{http_code};
51             }
52              
53              
54             sub as_string {
55 2     2 1 12 my $self = shift;
56              
57 2         5 return sprintf( "Error: %s at %s line %s.\n",
58             $self->message, $self->path, $self->line );
59             }
60              
61              
62             1;
63              
64             __END__