Middleware added, cookie state added, and example psgi app
[catagits/Web-Session.git] / lib / Plack / Session / State.pm
1 package Plack::Session::State;
2 use strict;
3 use warnings;
4
5 use Plack::Util::Accessor qw[ session_key ];
6
7 sub new {
8     my ($class, %params) = @_;
9     bless {
10         session_key => $params{ session_key } || 'plack_session',
11         expired     => {}
12     } => $class;
13 }
14
15 sub expire_session_id {
16     my ($self, $id) = @_;
17     $self->{expired}->{ $id }++;
18 }
19
20 sub check_expired {
21     my ($self, $id) = @_;
22     return unless $id && not exists $self->{expired}->{ $id };
23     return $id;
24 }
25
26 # given a request, get the
27 # session id from it
28 sub get_session_id {
29     my ($self, $request) = @_;
30     $self->extract( $request )
31         ||
32     $self->generate( $request )
33 }
34
35 sub extract {
36     my ($self, $request) = @_;
37     $self->check_expired( $request->param( $self->session_key ) );
38 }
39
40 {
41     my $id = 1;
42     sub generate { $id++ }
43 }
44
45 sub finalize {
46     my ($self, $id, $response) = @_;
47     ();
48 }
49
50 1;