Middleware added, cookie state added, and example psgi app
[catagits/Web-Session.git] / lib / Plack / Session.pm
CommitLineData
06190e8b 1package Plack::Session;
2use strict;
3use warnings;
4
5use Plack::Util::Accessor qw[
6 id
7 store
8 state
9];
10
11sub new {
12 my ($class, %params) = @_;
13 bless {
14 id => $params{ state }->get_session_id( $params{ request } ),
15 state => $params{ state },
16 store => $params{ store },
17 } => $class;
18}
19
20## Data Managment
21
22sub get {
23 my ($self, $key) = @_;
24 $self->store->fetch( $self->id, $key )
25}
26
27sub set {
28 my ($self, $key, $value) = @_;
29 $self->store->store( $self->id, $key, $value );
30}
31
32sub remove {
33 my ($self, $key) = @_;
34 $self->store->delete( $self->id, $key );
35}
36
37## Lifecycle Management
38
39sub expire {
40 my $self = shift;
41 $self->store->cleanup( $self->id );
42 $self->state->expire_session_id( $self->id );
43}
44
45sub finalize {
bd992981 46 my ($self, $response) = @_;
47 $self->store->persist( $self->id, $response );
48 $self->state->finalize( $self->id, $response );
06190e8b 49}
50
511;