summaryrefslogtreecommitdiff
path: root/lib/DeWeave/EDO.pm
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2011-03-25 21:43:42 +0000
committerdakkar <dakkar@thenautilus.net>2011-03-25 21:43:42 +0000
commit75aa29074f273164a8029d2fd8c963f8de5aea49 (patch)
tree7dca22b15aa45172a36c3bf83035bb610e9ff109 /lib/DeWeave/EDO.pm
parentbroken first stab (diff)
downloadDeWeave-75aa29074f273164a8029d2fd8c963f8de5aea49.tar.gz
DeWeave-75aa29074f273164a8029d2fd8c963f8de5aea49.tar.bz2
DeWeave-75aa29074f273164a8029d2fd8c963f8de5aea49.zip
it might even complie
Diffstat (limited to 'lib/DeWeave/EDO.pm')
-rw-r--r--lib/DeWeave/EDO.pm22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/DeWeave/EDO.pm b/lib/DeWeave/EDO.pm
index 29a9cee..30fdbf2 100644
--- a/lib/DeWeave/EDO.pm
+++ b/lib/DeWeave/EDO.pm
@@ -3,6 +3,7 @@ use Moose;
use namespace::autoclean;
use MooseX::Types::Moose qw(Int Str Num);
use JSON::Any;
+use Try::Tiny;
extends 'DeWeave::WBO';
@@ -24,4 +25,25 @@ has hmac => (
is => 'ro',
);
+around BUILDARGS => sub {
+ my $orig = shift;
+ my $class = shift;
+
+ my $args = $class->$orig(@_);
+ return $args unless defined $args->{__crypt};
+
+ my $decrypted_payload = $args->{__crypt}->decrypt($args);
+
+ if (defined $decrypted_payload) {
+ try {
+ my $j = JSON::Any->new;
+ my $extra_args = $j->decode($decrypted_payload);
+
+ @$args{keys %$extra_args} =
+ values %$extra_args;
+ };
+ }
+ return $args;
+};
+
1;