From 75aa29074f273164a8029d2fd8c963f8de5aea49 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 25 Mar 2011 21:43:42 +0000 Subject: it might even complie --- lib/DeWeave/EDO.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib/DeWeave/EDO.pm') 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; -- cgit v1.2.3