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   349976 use strict;
  5         10  
  5         219  
3 5     5   28 use warnings;
  5         15  
  5         320  
4              
5             our $VERSION = '0.23';
6             our $AUTHORITY = 'cpan:STEVAN';
7              
8 5     5   2385 use Plack::Util::Accessor qw( session options );
  5         1129  
  5         35  
9              
10             sub new {
11 36     36 1 335 my ($class, $env) = @_;
12 36         153 bless {
13             session => $env->{'psgix.session'},
14             options => $env->{'psgix.session.options'},
15             }, $class;
16             }
17              
18             sub id {
19 40     40 1 3082 my $self = shift;
20 40         94 $self->options->{id};
21             }
22              
23             ## Data Managment
24              
25             sub dump {
26 36     36 1 13146 my $self = shift;
27 36         110 $self->session;
28             }
29              
30             sub get {
31 60     60 1 21751 my ($self, $key) = @_;
32 60         167 $self->session->{$key};
33             }
34              
35             sub set {
36 20     20 1 8600 my ($self, $key, $value) = @_;
37 20         60 delete $self->options->{no_store};
38 20         142 $self->session->{$key} = $value;
39             }
40              
41             sub remove {
42 4     4 1 1748 my ($self, $key) = @_;
43 4         15 delete $self->options->{no_store};
44 4         54 delete $self->session->{$key};
45             }
46              
47             sub keys {
48 4     4 1 7 my $self = shift;
49 4         5 keys %{$self->session};
  4         14  
50             }
51              
52             ## Lifecycle Management
53              
54             sub expire {
55 4     4 1 2047 my $self = shift;
56 4         17 for my $key ($self->keys) {
57 8         54 delete $self->session->{$key};
58             }
59 4         27 $self->options->{expire} = 1;
60             }
61              
62             1;
63              
64             __END__