summaryrefslogtreecommitdiff
path: root/lib/DeWeave/EDO.pm
diff options
context:
space:
mode:
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;