From fe4c6e3e5b0875cc287eceb701ef751f3511dc6b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 21 Dec 2010 13:00:30 -0600 Subject: use delegation here instead of roles --- lib/KiokuDB/Serializer/Crypt.pm | 43 +++++++++++++++++++++++++++----- lib/KiokuDB/Serializer/JSON/Crypt.pm | 38 ---------------------------- lib/KiokuDB/Serializer/Storable/Crypt.pm | 39 ----------------------------- lib/KiokuDB/Serializer/YAML/Crypt.pm | 39 ----------------------------- 4 files changed, 37 insertions(+), 122 deletions(-) delete mode 100644 lib/KiokuDB/Serializer/JSON/Crypt.pm delete mode 100644 lib/KiokuDB/Serializer/Storable/Crypt.pm delete mode 100644 lib/KiokuDB/Serializer/YAML/Crypt.pm diff --git a/lib/KiokuDB/Serializer/Crypt.pm b/lib/KiokuDB/Serializer/Crypt.pm index 159c0d6..06dba25 100644 --- a/lib/KiokuDB/Serializer/Crypt.pm +++ b/lib/KiokuDB/Serializer/Crypt.pm @@ -1,18 +1,31 @@ package KiokuDB::Serializer::Crypt; -use Moose::Role; +use Moose; use namespace::autoclean; # ABSTRACT: encrypt data stored in kiokudb use Crypt::Util; +use KiokuDB::Backend::Hash; +use KiokuDB::Backend::Serialize; =head1 SYNOPSIS - package My::Serializer; - use Moose; - with 'KiokuDB::Serializer', 'KiokuDB::Serializer::Crypt'; + use KiokuDB::Util; + use KiokuDB::Serializer::Crypt; - sub serialize { ... } - sub deserialize { ... } + my $dsn = '...'; + my $secret = '...'; + + my $backend = KiokuDB::Util::dsn_to_backend( + $dsn, + serializer => KiokuDB::Serializer::Crypt->new( + serializer => 'json', + crypt_cipher => 'Rijndael', + crypt_mode => 'CFB', + crypt_key => $secret, + ), + ) + + my $d = KiokuDB->new(backend => $backend); =head1 DESCRIPTION @@ -100,6 +113,22 @@ has crypt => ( handles => ['encrypt_string', 'decrypt_string'], ); +=attr serializer + +The underlying serializer to use. KiokuDB will use this serializer to get a +string representation of the object which will then be encrypted. Defaults to +'storable'. + +=cut + +has serializer => ( + is => 'ro', + does => 'KiokuDB::Backend::Serialize', + coerce => 1, + default => 'storable', + handles => 'KiokuDB::Backend::Serialize', +); + around serialize => sub { my $orig = shift; my $self = shift; @@ -117,6 +146,8 @@ around deserialize => sub { return $self->$orig($self->decrypt_string($collapsed), @args); }; +with 'KiokuDB::Backend::Serialize'; + =head1 BUGS No known bugs. diff --git a/lib/KiokuDB/Serializer/JSON/Crypt.pm b/lib/KiokuDB/Serializer/JSON/Crypt.pm deleted file mode 100644 index 8a87fa5..0000000 --- a/lib/KiokuDB/Serializer/JSON/Crypt.pm +++ /dev/null @@ -1,38 +0,0 @@ -package KiokuDB::Serializer::JSON::Crypt; -use Moose; -use namespace::autoclean; -# ABSTRACT: encrypted JSON serializer - -=head1 SYNOPSIS - - use KiokuDB::Util; - use KiokuDB::Serializer::JSON::Crypt; - - my $dsn = '...'; - my $secret = '...'; - - my $backend = KiokuDB::Util::dsn_to_backend( - $dsn, - serializer => KiokuDB::Serializer::JSON::Crypt->new( - crypt_cipher => 'Rijndael', - crypt_mode => 'CFB', - crypt_key => $secret, - ), - ) - - my $d = KiokuDB->new(backend => $backend); - -=head1 DESCRIPTION - -This serializer class extends L to add encryption -support. See L for an explanation of the allowed -attributes. - -=cut - -extends 'KiokuDB::Serializer::JSON'; -with 'KiokuDB::Serializer::Crypt'; - -__PACKAGE__->meta->make_immutable; - -1; diff --git a/lib/KiokuDB/Serializer/Storable/Crypt.pm b/lib/KiokuDB/Serializer/Storable/Crypt.pm deleted file mode 100644 index 4bd17b5..0000000 --- a/lib/KiokuDB/Serializer/Storable/Crypt.pm +++ /dev/null @@ -1,39 +0,0 @@ -package KiokuDB::Serializer::Storable::Crypt; -use Moose; -use namespace::autoclean; - -# ABSTRACT: encrypted Storable serializer - -=head1 SYNOPSIS - - use KiokuDB::Util; - use KiokuDB::Serializer::Storable::Crypt; - - my $dsn = '...'; - my $secret = '...'; - - my $backend = KiokuDB::Util::dsn_to_backend( - $dsn, - serializer => KiokuDB::Serializer::Storable::Crypt->new( - crypt_cipher => 'Rijndael', - crypt_mode => 'CFB', - crypt_key => $secret, - ), - ) - - my $d = KiokuDB->new(backend => $backend); - -=head1 DESCRIPTION - -This serializer class extends L to add -encryption support. See L for an explanation of the -allowed attributes. - -=cut - -extends 'KiokuDB::Serializer::Storable'; -with 'KiokuDB::Serializer::Crypt'; - -__PACKAGE__->meta->make_immutable; - -1; diff --git a/lib/KiokuDB/Serializer/YAML/Crypt.pm b/lib/KiokuDB/Serializer/YAML/Crypt.pm deleted file mode 100644 index 5f6f85b..0000000 --- a/lib/KiokuDB/Serializer/YAML/Crypt.pm +++ /dev/null @@ -1,39 +0,0 @@ -package KiokuDB::Serializer::YAML::Crypt; -use Moose; -use namespace::autoclean; - -# ABSTRACT: encrypted YAML serializer - -=head1 SYNOPSIS - - use KiokuDB::Util; - use KiokuDB::Serializer::YAML::Crypt; - - my $dsn = '...'; - my $secret = '...'; - - my $backend = KiokuDB::Util::dsn_to_backend( - $dsn, - serializer => KiokuDB::Serializer::YAML::Crypt->new( - crypt_cipher => 'Rijndael', - crypt_mode => 'CFB', - crypt_key => $secret, - ), - ) - - my $d = KiokuDB->new(backend => $backend); - -=head1 DESCRIPTION - -This serializer class extends L to add -encryption support. See L for an explanation of the -allowed attributes. - -=cut - -extends 'KiokuDB::Serializer::YAML'; -with 'KiokuDB::Serializer::Crypt'; - -__PACKAGE__->meta->make_immutable; - -1; -- cgit v1.2.3-54-g00ecf