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   144855 use strict;
  15         27  
  15         491  
3 15     15   70 use warnings;
  15         22  
  15         706  
4              
5             our $VERSION = '0.23';
6             our $AUTHORITY = 'cpan:STEVAN';
7              
8 15     15   7202 use Digest::SHA1 ();
  15         9780  
  15         379  
9              
10 15     15   3658 use Plack::Request;
  15         258003  
  15         442  
11 15         102 use Plack::Util::Accessor qw[
12             session_key
13             sid_generator
14             sid_validator
15 15     15   2101 ];
  15         1141  
16              
17             sub new {
18 14     14 1 153 my ($class, %params) = @_;
19              
20 14   50     98 $params{'session_key'} ||= 'plack_session';
21             $params{'sid_generator'} ||= sub {
22 36     36   1202 Digest::SHA1::sha1_hex(rand() . $$ . {} . time)
23 14   50     136 };
24 14   33     116 $params{'sid_validator'} ||= qr/\A[0-9a-f]{40}\Z/;
25              
26 14         163 bless { %params } => $class;
27             }
28              
29             sub expire_session_id {
30 6     6 1 54 my ($self, $id, $res) = @_;
31             }
32              
33             sub validate_session_id {
34 58     58 1 102 my ($self, $id) = @_;
35 58         161 $id =~ $self->sid_validator;
36             }
37              
38             sub get_session_id {
39 54     54 1 61 my ($self, $env) = @_;
40 54         261 return Plack::Request->new($env)->param( $self->session_key );
41             }
42              
43             sub extract {
44 78     78 1 375 my ($self, $env) = @_;
45              
46 78         174 my $id = $self->get_session_id( $env );
47 78 100       9346 return unless defined $id;
48              
49 58 100       152 return $id if $self->validate_session_id( $id );
50 8         110 return;
51             }
52              
53             sub generate {
54 36     36 1 178 my $self = shift;
55 36         109 $self->sid_generator->( @_ );
56             }
57              
58              
59             sub finalize {
60 48     48 1 265 my ($self, $id, $res, $options) = @_;
61 48         141 ();
62             }
63              
64             1;
65              
66             __END__