diff options
Diffstat (limited to 'lib/presque/Role/Queue')
-rw-r--r-- | lib/presque/Role/Queue/Names.pm | 55 | ||||
-rw-r--r-- | lib/presque/Role/Queue/WithContent.pm | 33 | ||||
-rw-r--r-- | lib/presque/Role/Queue/WithQueueName.pm | 25 |
3 files changed, 113 insertions, 0 deletions
diff --git a/lib/presque/Role/Queue/Names.pm b/lib/presque/Role/Queue/Names.pm new file mode 100644 index 0000000..6a2b6a7 --- /dev/null +++ b/lib/presque/Role/Queue/Names.pm @@ -0,0 +1,55 @@ +package presque::Role::Queue::Names; + +use Moose::Role; + +sub _queue { + my ($self, $queue_name) = @_; + return $queue_name.':queue'; +} + +sub _queue_delayed { + my ($self, $queue_name) = @_; + return $queue_name.':delayed'; +} + +sub _queue_policy { + my ($self, $queue_name) = @_; + return $queue_name.':queuepolicy'; +} + +sub _queue_uuid { + my ($self, $queue_name) = @_; + return $queue_name.':UUID'; +} + +sub _queue_uniq { + my ($self, $queue_name) = @_; + return $queue_name . ':uniq'; +} + +sub _queue_key { + my ($self, $queue_name, $uuid) = @_; + return $queue_name.':'.$uuid; +} + +sub _queue_stat { + my ($self, $queue_name) = @_; + return 'queuestat:'.$queue_name; +} + +sub _queue_worker { + my ($self, $worker_name) = @_; + return 'worker:'.$worker_name; +} + +sub _queue_failed { + my ($self, $queue_name) = @_; + return 'failed:'.$queue_name; +} + +sub _queue_processed { + my ($self, $queue_name) = @_; + return 'processed:' . $queue_name; +} + +1; 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; diff --git a/lib/presque/Role/Queue/WithQueueName.pm b/lib/presque/Role/Queue/WithQueueName.pm new file mode 100644 index 0000000..f911a57 --- /dev/null +++ b/lib/presque/Role/Queue/WithQueueName.pm @@ -0,0 +1,25 @@ +package presque::Role::Queue::WithQueueName; + +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); + + $self->$orig($queue_name); + }; + } +}; + +1; |