summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-12-21 13:00:30 -0600
committerJesse Luehrs <doy@tozt.net>2010-12-21 13:22:31 -0600
commitfe4c6e3e5b0875cc287eceb701ef751f3511dc6b (patch)
tree482107b9116d98d340e6068bc98b76a10b45e612
parent244ad8fc7e090884b3fc7fda2d7036d7f756c40b (diff)
downloadkiokudb-serializer-crypt-fe4c6e3e5b0875cc287eceb701ef751f3511dc6b.tar.gz
kiokudb-serializer-crypt-fe4c6e3e5b0875cc287eceb701ef751f3511dc6b.zip
use delegation here instead of roles
-rw-r--r--lib/KiokuDB/Serializer/Crypt.pm43
-rw-r--r--lib/KiokuDB/Serializer/JSON/Crypt.pm38
-rw-r--r--lib/KiokuDB/Serializer/Storable/Crypt.pm39
-rw-r--r--lib/KiokuDB/Serializer/YAML/Crypt.pm39
4 files changed, 37 insertions, 122 deletions
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<KiokuDB::Serializer::JSON> to add encryption
-support. See L<KiokuDB::Serializer::Crypt> 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<KiokuDB::Serializer::Storable> to add
-encryption support. See L<KiokuDB::Serializer::Crypt> 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<KiokuDB::Serializer::YAML> to add
-encryption support. See L<KiokuDB::Serializer::Crypt> for an explanation of the
-allowed attributes.
-
-=cut
-
-extends 'KiokuDB::Serializer::YAML';
-with 'KiokuDB::Serializer::Crypt';
-
-__PACKAGE__->meta->make_immutable;
-
-1;