File Coverage

blib/lib/Plack/Session.pm
Criterion Covered Total %
statement 30 30 100.0
branch n/a
condition n/a
subroutine 11 11 100.0
pod 8 8 100.0
total 49 49 100.0


line stmt bran cond sub pod time code
1             package Plack::Session;
2 5     5   276870 use strict;
  5         9  
  5         165  
3 5     5   22 use warnings;
  5         9  
  5         231  
4              
5             our $VERSION = '0.30';
6             our $AUTHORITY = 'cpan:STEVAN';
7              
8 5     5   1676 use Plack::Util::Accessor qw( session options );
  5         807  
  5         27  
9              
10             sub new {
11 36     36 1 297 my ($class, $env) = @_;
12 36         132 bless {
13             session => $env->{'psgix.session'},
14             options => $env->{'psgix.session.options'},
15             }, $class;
16             }
17              
18             sub id {
19 40     40 1 2462 my $self = shift;
20 40         93 $self->options->{id};
21             }
22              
23             ## Data Managment
24              
25             sub dump {
26 36     36 1 11534 my $self = shift;
27 36         98 $self->session;
28             }
29              
30             sub get {
31 60     60 1 17258 my ($self, $key) = @_;
32 60         151 $self->session->{$key};
33             }
34              
35             sub set {
36 20     20 1 6612 my ($self, $key, $value) = @_;
37 20         113 delete $self->options->{no_store};
38 20         120 $self->session->{$key} = $value;
39             }
40              
41             sub remove {
42 4     4 1 1678 my ($self, $key) = @_;
43 4         14 delete $self->options->{no_store};
44 4         52 delete $self->session->{$key};
45             }
46              
47             sub keys {
48 4     4 1 7 my $self = shift;
49 4         7 keys %{$self->session};
  4         9  
50             }
51              
52             ## Lifecycle Management
53              
54             sub expire {
55 4     4 1 1556 my $self = shift;
56 4         16 for my $key ($self->keys) {
57 8         57 delete $self->session->{$key};
58             }
59 4         23 $self->options->{expire} = 1;
60             }
61              
62             1;
63              
64             __END__