diff -r 08a632c3244f -r 21e23104454c lib/Joker/Result.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/Joker/Result.pm Sun Dec 21 18:02:02 2014 +0100 @@ -0,0 +1,64 @@ +package Joker::Result; +use Moose; +use MooseX::SemiAffordanceAccessor; + +has response => (is => 'ro', isa => 'Str'); + +has fields => ( + is => 'ro', + isa => 'ArrayRef', + lazy => 1, + init_arg => undef, + builder => '_fields' +); + +has status => ( + is => 'ro', + lazy => 1, + init_arg => undef, + builder => '_status' +); + +has data => ( + is => 'ro', + isa => 'HashRef', + lazy => 1, + init_arg => undef, + builder => '_data', +); + +has fields => ( + is => 'ro', + isa => 'ArrayRef', + lazy => 1, + init_arg => undef, + default => sub { sort keys %{ $_[0]->data } }, +); + +has code => ( + is => 'ro', + isa => 'Int', + lazy => 1, + init_arg => undef, + default => sub { $_[0]->data->{'status-code'} }, +); + +has status => ( + is => 'ro', + isa => 'Str', + lazy => 1, + init_arg => undef, + default => sub { $_[0]->data->{'status-text'} }, +); + +sub _data { + my $self = shift; + my %_data; + my $_ = $self->response; + while (/^(\S+):\s*(.*)$/gm) { + $_data{lc $1} = $2; + } + return \%_data; +} + +__PACKAGE__->meta->make_immutable;