Commit | Line | Data |
---|---|---|
36cf3bcb | 1 | package Tak::Request; |
2 | ||
31a246e4 | 3 | use Tak::Result; |
36cf3bcb | 4 | use Moo; |
5 | ||
31a246e4 | 6 | has on_progress => (is => 'ro'); |
36cf3bcb | 7 | |
31a246e4 | 8 | has on_result => (is => 'ro', required => 1); |
36cf3bcb | 9 | |
31a246e4 | 10 | sub progress { |
11 | my ($self, @report) = @_; | |
12 | if (my $cb = $self->on_progress) { | |
13 | $cb->(@report); | |
14 | } | |
15 | } | |
ca30c15e | 16 | |
31a246e4 | 17 | sub result { |
18 | my ($self, $type, @data) = @_; | |
19 | $self->on_result->(Tak::Result->new(type => $type, data => \@data)); | |
36cf3bcb | 20 | } |
21 | ||
77bf1d9b | 22 | sub flatten { |
23 | my ($self) = @_; | |
24 | return ($self->type, @{$self->data}); | |
25 | } | |
26 | ||
31a246e4 | 27 | sub success { shift->result(success => @_) } |
28 | sub mistake { shift->result(mistake => @_) } | |
29 | sub failure { shift->result(failure => @_) } | |
30 | sub fatal { shift->result(fatal => @_) } | |
31 | ||
36cf3bcb | 32 | 1; |