diff options
author | dakkar <dakkar@thenautilus.net> | 2011-03-25 23:54:14 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2011-03-25 23:54:14 +0000 |
commit | e1872c5028937753e0ecbebcded8a312d5eb7ce4 (patch) | |
tree | 38cfdbbf3cda37cc23bb760b39d478e9c29a6676 /lib/DeWeave/WBO.pm | |
parent | it might even complie (diff) | |
download | DeWeave-e1872c5028937753e0ecbebcded8a312d5eb7ce4.tar.gz DeWeave-e1872c5028937753e0ecbebcded8a312d5eb7ce4.tar.bz2 DeWeave-e1872c5028937753e0ecbebcded8a312d5eb7ce4.zip |
very broken, can't decrypt
Diffstat (limited to 'lib/DeWeave/WBO.pm')
-rw-r--r-- | lib/DeWeave/WBO.pm | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/lib/DeWeave/WBO.pm b/lib/DeWeave/WBO.pm index 3f551dd..bdfb027 100644 --- a/lib/DeWeave/WBO.pm +++ b/lib/DeWeave/WBO.pm @@ -4,6 +4,7 @@ use namespace::autoclean; use MooseX::Types::Moose qw(Int Str Num); use JSON::Any; use Try::Tiny; +use Data::Dump 'pp'; has id => ( isa => Str, @@ -19,7 +20,7 @@ has modified => ( has sortindex => ( isa => Num, - required => 1, + required => 0, is => 'ro', ); @@ -41,17 +42,30 @@ sub from_json { my $j = JSON::Any->new; my $args = $j->decode($json); - if (exists $args->{payload}) { - try { - my $extra_args = $j->decode($args->{payload}); - - @$args{keys %$extra_args} = - values %$extra_args; - $args->{__crypt}=$crypt; - }; + use Data::Dump 'pp';warn pp $args; + if (defined $args->{payload}) { + $args->{__crypt}=$crypt; } - $class->new($args); + return $class->new($args); } +around BUILDARGS => sub { + my $orig = shift; + my $class = shift; + + my $args = $class->$orig(@_); + + return $args unless defined $args->{payload}; + + my $j = JSON::Any->new; + my $extra_args = $j->decode($args->{payload}); + + @$args{keys %$extra_args} = + values %$extra_args; + + return $args; +}; + + 1; |