package MojoX::Session::Store::File::Driver::JSON;

use base 'MojoX::Session::Store::File::Driver';

use Cpanel::JSON::XS qw/encode_json decode_json/;

sub new {
    my $class = shift;

    bless $class->SUPER::new(@_), $class;
}

sub freeze {
    my $self = shift;

    my($file, $ref) = @_;
    $ref = \$ref unless ref $ref;

    my $json = encode_json($ref) || return;
    open my $fh, '>', $file or return;
    print $fh $json;
    close $fh;
    return 1;
}

sub thaw {
    my $self = shift;

    my $file = shift;

    open my $fh, '<', $file or return;
    local $/;
    my $result = decode_json(<$fh>) || return;
    close $fh;

    return $result;
}

1;
