Concierge-Sessions
view release on metacpan or search on metacpan
lib/Concierge/Sessions/Base.pm view on Meta::CPAN
use Crypt::PRNG qw(random_bytes);
sub new {
my ($class, %args) = @_;
return bless {}, $class;
}
# Define interface methods that must be implemented by subclasses
sub create_session { die "Subclass must implement create_session" }
sub get_session_info { die "Subclass must implement get_session_info" }
sub update_session { die "Subclass must implement update_session" }
sub delete_session { die "Subclass must implement delete_session" }
sub cleanup_sessions { die "Subclass must implement cleanup_sessions" }
sub delete_user_session { die "Subclass must implement delete_user_session" }
# Utilities
sub generate_session_id {
return unpack('H*', random_bytes(20));
}
1;
lib/Concierge/Sessions/File.pm view on Meta::CPAN
return { success => 0, message => "Session expired" };
}
return {
success => 1,
message => "Session info retrieved",
info => $session_info
};
}
sub update_session {
my ($self, $session_id, $updates) = @_;
unless ($session_id) {
return { success => 0, message => "Session ID required to update session in File backend" };
}
unless ($updates) {
return { success => 1, message => "No updates specified for File backend session update" };
}
lib/Concierge/Sessions/SQLite.pm view on Meta::CPAN
return { success => 0, message => "Session not found or expired" };
}
# Decode session_info from JSON to hashref
$session_info->{status} = JSON::PP->new->utf8->decode( $session_info->{status} );
$session_info->{data} = JSON::PP->new->utf8->decode( $session_info->{data} );
return { success => 1, info => $session_info };
}
sub update_session {
my ($self, $session_id, $updates) = @_;
unless ($session_id) {
return { success => 0, message => "Session ID required to update session in SQLite backend" };
}
unless ($updates) {
return { success => 1, message => "No updates specified for File backend session update" };
}
( run in 1.692 second using v1.01-cache-2.11-cpan-39bf76dae61 )