App-locket
view release on metacpan or search on metacpan
lib/App/locket/Locket.pm view on Meta::CPAN
package App::locket::Locket;
use strict;
use warnings;
use Crypt::Rijndael;
use Crypt::Random qw/ makerandom_octet /;
use Digest::SHA qw/ sha256 sha256_hex /;
use MIME::Base64;
use JSON; my $JSON = JSON->new->pretty;
use File::HomeDir;
use Path::Class;
use Term::ReadKey;
use YAML::XS();
use File::Temp;
use Try::Tiny;
use String::Util qw/ trim /;
use App::locket::Store;
use App::locket::Moose;
has_file cfg_file => qw/ is ro required 1 /;
sub open {
my $self = shift;
my $file = shift;
return $self->new( cfg_file => $file );
}
has passphrase => qw/ is rw isa Maybe[Str] /;
sub require_passphrase {
my $self = shift;
return 0 if ! -f $self->cfg_file;
my $ciphercfg = $self->read_cfg;
return $ciphercfg =~ m/^\s*\{/;
}
has cfg => qw/ is ro isa HashRef lazy_build 1 clearer clear_cfg /;
sub _build_cfg {
my $self = shift;
return $self->load_cfg;
}
has ciphercfg => qw/ is ro isa Str lazy_build 1 clearer clear_ciphercfg/;
sub _build_ciphercfg {
my $self = shift;
return $self->read_cfg;
}
has plaincfg => qw/ is ro isa Maybe[Str] lazy_build 1 clearer clear_plaincfg /;
sub _build_plaincfg {
my $self = shift;
my $ciphercfg = $self->read_cfg;
if ( $self->require_passphrase ) {
my $passphrase = $self->passphrase;
my $plaincfg = $self->unpickle( $passphrase, $ciphercfg, plaintext => 1 );
}
else {
return $ciphercfg; # Actually not a "ciphercfg"
}
}
has plainstore => qw/ is ro isa Str lazy_build 1 clearer clear_plainstore /;
sub _build_plainstore {
my $self = shift;
return $self->read;
}
has store => qw/ is ro isa App::locket::Store lazy_build 1 clearer clear_store /;
sub _build_store {
my $self = shift;
return $self->load;
}
( run in 1.361 second using v1.01-cache-2.11-cpan-39bf76dae61 )