e::Session::Serialize::JSON;
use strict;
use JSON qw(to_json from_json);
our $VERSION = '1.2.6';
sub serialize {
my $session = shift;
$session->{serialized} = to_json( $session->{data}, {
ta;
}
sub _unserialize {
my ( $serialized, $next ) = @_;
my $tmp;
eval { $tmp = from_json( $serialized, { allow_nonref => 1 } ) };
if ($@) {
require Storable;
$next ||
ize::JSON - Use JSON to zip up data
=head1 SYNOPSIS
use Apache::Session::Serialize::JSON;
$zipped = Apache::Session::Serialize::JSON::serialize($ref);
$ref = Apache::Session::Serialize::JSON::un
@_ );
}
sub checkMaster {
my ( $self, $args ) = @_;
delete $self->{failure};
require JSON;
require LWP::UserAgent;
require IO::Socket::SSL;
my $ua = LWP::UserAgent->new(
$resp = $ua->get($patroniUrl);
if ( $resp->is_success ) {
my $c = eval { JSON::from_json( $resp->decoded_content ) };
if ( $@ or !$c->{members} or ref( $c->{members} )
::Browseable::Store::LDAP;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::_common;
use Net::LDAP::Util qw(escape_filter_value);
our $VER
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
sub unserialize {
m
y $session = shift;
my $tmp = { serialized => $session };
Apache::Session::Serialize::JSON::unserialize($tmp);
return $tmp->{data};
}
sub searchOn {
my ( $class, $args, $selectField,
:Browseable::Store::MySQL;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::DBI;
our $VERSION = '1.2.5';
our @ISA = qw(Apache::Session
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
# Override default CAST
ache::Session::Generate::SHA256;
use Apache::Session::Lock::Null;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::_common;
our $VERSION = '1.3.18';
our @ISA = qw(Apache::Se
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
sub unserialize {
m
y $session = shift;
my $tmp = { serialized => $session };
Apache::Session::Serialize::JSON::unserialize($tmp);
return $tmp->{data};
}
sub searchOn {
my ( $class, $args, $selectFie
Browseable::Store::Oracle;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::DBI;
our $VERSION = '1.2.2';
our @ISA = qw(Apache::Session
nerate::SHA256::validate;
$self->{serialize} = \&Apache::Session::Serialize::JSONserialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSONunserialize;
return $self;
}
1;
::Browseable::Store::File;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::_common;
use constant SL => ( $^O and $^O =~ /(?:MSWin|Windows
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
sub DESTROY {
my $s
) eq 'CODE' ) {
$res{$f} =
&$data( &Apache::Session::Serialize::JSON::_unserialize($row),
$f );
}
elsif ($data) {
Browseable::Store::SQLite;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::DBI;
our $VERSION = '1.2.2';
our @ISA = qw(Apache::Session
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
1;
=pod
=head1 NAME
QLJSON;
use strict;
use Apache::Session;
use Apache::Session::Lock::Null;
use Apache::Session::Browseable::Store::MySQL;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
sub searchOn {
my (
nd indexes:
CREATE TABLE sessions (
id varchar(64) not null primary key,
a_session json,
as_wt varchar(32) AS (a_session->"$._whatToTrace") VIRTUAL,
as_sk varchar(12) AS (a_
ble::PgJSON;
use Apache::Session::Browseable::Store::Patroni;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
our @ISA = qw(Apache::Session::Browseable::PgJSON);
our
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
1;
__END__
=head1 NAME
t
for L<Apache::Session::Browseable::PgJSON>
=head1 SYNOPSIS
CREATE UNLOGGED TABLE sessions (
id varchar(64) not null primary key,
a_session jsonb,
);
Optionally, add indexes on som
package Apache::Session::Serialize::Hstore;
use strict;
use JSON qw(to_json from_json);
our $VERSION = '1.2.5';
sub serialize {
my ($session) = @_;
$session->{serialized} = {};
my $data
%$data ) {
my $v;
if ( ref $data->{$_} ) {
$v = '_json://' . to_json( $data->{$_} );
}
else {
$v = $data->{$_};
#%22/"/g;
if ( $v =~ s#^_json://## ) {
my $tmp;
eval { $tmp = from_json($v) };
if ($@) {
print STDERR "JSON error: $@\n";
re
wseable::Store::Cassandra;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::DBI;
our $VERSION = '1.3.13';
our @ISA = qw(Apache::Sessio
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
1;
=pod
=head1 NAME
owseable::Store::Postgres;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::DBI;
our $VERSION = '1.3.1';
our @ISA = qw(Apache::Session
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
sub searchOn {
my $
gJSON;
use strict;
use Apache::Session;
use Apache::Session::Lock::Null;
use Apache::Session::Browseable::Store::Postgres;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON
e;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
sub searchOn {
my (
{pg_enable_utf8} = 1;
return $dbh;
}
1;
__END__
=head1 NAME
Apache::Session::Browseable::PgJSON - Hstore type support for
L<Apache::Session::Browseable::Postgres>
=head1 SYNOPSIS
Create table
owseable::Store::Informix;
use Apache::Session::Generate::SHA256;
use Apache::Session::Serialize::JSON;
use Apache::Session::Browseable::DBI;
our $VERSION = '1.2.2';
our @ISA = qw(Apache::Session
te::SHA256::validate;
$self->{serialize} = \&Apache::Session::Serialize::JSON::serialize;
$self->{unserialize} = \&Apache::Session::Serialize::JSON::unserialize;
return $self;
}
1;
store" field
=item L<Apache::Session::Browseable::PgJSON>: uses "json/jsonb" field
=item L<Apache::Session::Browseable::Patroni>: uses "json/jsonb" field and
manage connection using Patroni API to f
rowseable::MySQL>: for MySQL and MariaDB
=item L<Apache::Session::Browseable::MySQLJSON>: for MySQL only, uses "json" field
=back
=head3 Other
=over
=item L<Apache::Session::Browseable::Informix>