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