File Coverage

blib/lib/Plack/Session/State.pm
Criterion Covered Total %
statement 35 35 100.0
branch 4 4 100.0
condition 3 7 42.8
subroutine 13 13 100.0
pod 7 7 100.0
total 62 66 93.9


line stmt bran cond sub pod time code
1             package Plack::Session::State;
2 15     15   148021 use strict;
  15         26  
  15         482  
3 15     15   65 use warnings;
  15         19  
  15         650  
4              
5             our $VERSION = '0.30';
6             our $AUTHORITY = 'cpan:STEVAN';
7              
8 15     15   7326 use Digest::SHA1 ();
  15         10066  
  15         471  
9              
10 15     15   4153 use Plack::Request;
  15         315708  
  15         554  
11 15         108 use Plack::Util::Accessor qw[
12             session_key
13             sid_generator
14             sid_validator
15 15     15   2725 ];
  15         1175  
16              
17             sub new {
18 14     14 1 121 my ($class, %params) = @_;
19              
20 14   50     98 $params{'session_key'} ||= 'plack_session';
21             $params{'sid_generator'} ||= sub {
22 36     36   1186 Digest::SHA1::sha1_hex(rand() . $$ . {} . time)
23 14   50     137 };
24 14   33     122 $params{'sid_validator'} ||= qr/\A[0-9a-f]{40}\Z/;
25              
26 14         173 bless { %params } => $class;
27             }
28              
29             sub expire_session_id {
30 6     6 1 63 my ($self, $id, $res) = @_;
31             }
32              
33             sub validate_session_id {
34 58     58 1 75 my ($self, $id) = @_;
35 58         153 $id =~ $self->sid_validator;
36             }
37              
38             sub get_session_id {
39 54     54 1 56 my ($self, $env) = @_;
40 54         235 return Plack::Request->new($env)->param( $self->session_key );
41             }
42              
43             sub extract {
44 78     78 1 352 my ($self, $env) = @_;
45              
46 78         188 my $id = $self->get_session_id( $env );
47 78 100       8774 return unless defined $id;
48              
49 58 100       191 return $id if $self->validate_session_id( $id );
50 8         107 return;
51             }
52              
53             sub generate {
54 36     36 1 171 my $self = shift;
55 36         109 $self->sid_generator->( @_ );
56             }
57              
58              
59             sub finalize {
60 48     48 1 256 my ($self, $id, $res, $options) = @_;
61 48         142 ();
62             }
63              
64             1;
65              
66             __END__