diff options
Diffstat (limited to 'lib/presque/Role/Queue/WithContent.pm')
-rw-r--r-- | lib/presque/Role/Queue/WithContent.pm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/presque/Role/Queue/WithContent.pm b/lib/presque/Role/Queue/WithContent.pm new file mode 100644 index 0000000..df5679b --- /dev/null +++ b/lib/presque/Role/Queue/WithContent.pm @@ -0,0 +1,33 @@ +package presque::Role::Queue::WithContent; + +use MooseX::Role::Parameterized; + +parameter methods => (is => 'ro', isa => 'ArrayRef', required => 1); + +role { + my $p = shift; + + my $methods = $p->methods; + + foreach my $m (@$methods) { + around $m => sub { + my $orig = shift; + my $self = shift; + my $queue_name = shift; + + return $self->http_error_queue if (!$queue_name); + + return $self->http_error_content_type + if (!$self->request->header('Content-Type') + || $self->request->header('Content-Type') ne + 'application/json'); + + return $self->http_error("job is missing") + if !$self->request->content; + + $self->$orig($queue_name); + }; + } +}; + +1; |