File Coverage

blib/lib/Dancer/SharedData.pm
Criterion Covered Total %
statement 39 39 100.0
branch 14 14 100.0
condition 5 6 83.3
subroutine 15 15 100.0
pod 0 10 0.0
total 73 84 86.9


line stmt bran cond sub pod time code
1             package Dancer::SharedData;
2             our $AUTHORITY = 'cpan:SUKRIA';
3             # ABSTRACT: Shared-data singleton for Dancer
4             $Dancer::SharedData::VERSION = '1.3520';
5 189     189   1358 use strict;
  189         469  
  189         5561  
6 189     189   972 use warnings;
  189         417  
  189         4513  
7 189     189   80067 use Dancer::Timer;
  189         565  
  189         5275  
8 189     189   82099 use Dancer::Response;
  189         693  
  189         6140  
9 189     189   1442 use Dancer::Factory::Hook;
  189         434  
  189         83384  
10              
11             Dancer::Factory::Hook->instance->install_hooks(
12             qw/on_reset_state/
13             );
14              
15             # shared variables
16             my $vars = {};
17 111     111 0 275 sub vars {$vars}
18              
19             sub var {
20 19     19 0 49 my ($class, $key, $value) = @_;
21 19 100       72 $vars->{$key} = $value if (@_ == 3);
22 19         56 return $vars->{$key};
23             }
24              
25             # request headers
26             my $_headers;
27 613 100   613 0 2888 sub headers { (@_ == 2) ? $_headers = $_[1] : $_headers }
28              
29             # request singleton
30             my $_request;
31 3990 100   3990 0 12379 sub request { (@_ == 2) ? $_request = $_[1] : $_request }
32              
33             # current response
34             my $_response;
35             sub response {
36 4492 100   4492 0 9790 if (@_ == 2) {
37 1032         3106 $_response = $_[1];
38             }else{
39 3460 100       8696 $_response = Dancer::Response->new() if !defined $_response;
40 3460         7906 return $_response;
41             }
42             }
43 1016     1016 0 2316 sub reset_response { $_response = undef }
44              
45             # sessions singleton
46             my $_sessions;
47 274 100   274 0 1020 sub sessions { (@_ == 2) ? $_sessions = $_[1] : $_sessions }
48              
49             # request timer
50             my $_timer;
51 26   66 26 0 232 sub timer { $_timer ||= Dancer::Timer->new }
52 517     517 0 2295 sub reset_timer { $_timer = Dancer::Timer->new }
53              
54             # purging accessor
55             sub reset_all {
56 517     517 0 1204 my ($self, %options) = @_;
57 517   100     1506 my $is_forward = exists($options{reset_vars}) && ! $options{reset_vars};
58              
59 517         2450 Dancer::Factory::Hook->execute_hooks('on_reset_state', $is_forward);
60              
61 517 100       1475 if (!$is_forward) {
62 502         1076 $vars = {};
63             }
64 517         985 undef $_sessions;
65 517         4444 undef $_request;
66 517         11266 undef $_headers;
67 517         1346 reset_timer();
68 517         1265 reset_response();
69             }
70              
71             'Dancer::SharedData';
72              
73             __END__