Commit | Line | Data |
06190e8b |
1 | package Plack::Session; |
2 | use strict; |
3 | use warnings; |
4 | |
5 | use Plack::Util::Accessor qw[ |
6 | id |
7 | store |
8 | state |
9 | ]; |
10 | |
11 | sub 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 | |
22 | sub get { |
23 | my ($self, $key) = @_; |
24 | $self->store->fetch( $self->id, $key ) |
25 | } |
26 | |
27 | sub set { |
28 | my ($self, $key, $value) = @_; |
29 | $self->store->store( $self->id, $key, $value ); |
30 | } |
31 | |
32 | sub remove { |
33 | my ($self, $key) = @_; |
34 | $self->store->delete( $self->id, $key ); |
35 | } |
36 | |
37 | ## Lifecycle Management |
38 | |
39 | sub expire { |
40 | my $self = shift; |
41 | $self->store->cleanup( $self->id ); |
42 | $self->state->expire_session_id( $self->id ); |
43 | } |
44 | |
45 | sub finalize { |
bd992981 |
46 | my ($self, $response) = @_; |
47 | $self->store->persist( $self->id, $response ); |
48 | $self->state->finalize( $self->id, $response ); |
06190e8b |
49 | } |
50 | |
51 | 1; |