about summary refs log tree commit diff
path: root/lib/presque/ControlHandler.pm
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-05-15 10:14:40 +0200
committerfranck cuny <franck@lumberjaph.net>2010-05-15 10:14:40 +0200
commitdf5c9d29f8698d8491a454ba374592fd6275045b (patch)
tree65034bbc817df8e8d5b0d1c7f78e3dca8716d849 /lib/presque/ControlHandler.pm
parentrename stats to status (diff)
downloadpresque-df5c9d29f8698d8491a454ba374592fd6275045b.tar.gz
use new role
Diffstat (limited to 'lib/presque/ControlHandler.pm')
-rw-r--r--lib/presque/ControlHandler.pm48
1 files changed, 24 insertions, 24 deletions
diff --git a/lib/presque/ControlHandler.pm b/lib/presque/ControlHandler.pm
index 245ca26..e638798 100644
--- a/lib/presque/ControlHandler.pm
+++ b/lib/presque/ControlHandler.pm
@@ -3,23 +3,26 @@ package presque::ControlHandler;
 use JSON;
 use Moose;
 extends 'Tatsumaki::Handler';
-with
-  qw/presque::Role::QueueName presque::Role::Error presque::Role::Response/;
+
+with (
+  'presque::Role::QueueName',
+  'presque::Role::Error',
+  'presque::Role::Response',
+  'presque::Role::RequireQueue' => {methods => [qw/get post/]},
+);
 
 __PACKAGE__->asynchronous(1);
 
 sub get {
-    my ( $self, $queue_name ) = @_;
-
-    return $self->http_error_queue if !$queue_name;
+    my ($self, $queue_name) = @_;
 
     $self->application->redis->get(
         $self->_queue_stat($queue_name),
         sub {
             my $status = shift;
             $self->finish(
-                JSON::encode_json( {
-                        queue  => $queue_name,
+                JSON::encode_json(
+                    {   queue  => $queue_name,
                         status => $status
                     }
                 )
@@ -31,13 +34,15 @@ sub get {
 sub post {
     my ( $self, $queue_name ) = @_;
 
-    return $self->http_error_queue if !$queue_name;
+    my $content = $self->request->content;
 
-    my $content = JSON::decode_json( $self->request->content );
-    if ( $content->{status} eq 'start' ) {
+    return $self->http_error('content is missing') if !$content;
+
+    my $json = JSON::decode_json( $content );
+    if ( $json->{status} eq 'start' ) {
         $self->_set_status( $queue_name, 1 );
     }
-    elsif ( $content->{status} eq 'stop' ) {
+    elsif ( $json->{status} eq 'stop' ) {
         $self->_set_status( $queue_name, 0 );
     }
     else {
@@ -46,22 +51,17 @@ sub post {
 }
 
 sub _set_status {
-    my ( $self, $queue_name, $status ) = @_;
+    my ($self, $queue_name, $status) = @_;
 
     my $key = $self->_queue_stat($queue_name);
 
-    $self->application->redis->set(
-        $key, 0,
-        sub {
-            my $res = shift;
-            $self->finish(
-                JSON::encode_json( {
-                        queue    => $queue_name,
-                        response => $res
-                    }
-                )
-            );
-        }
+    $self->application->redis->set($key, $status);
+    $self->finish(
+        JSON::encode_json(
+            {   queue    => $queue_name,
+                response => 'updated',
+            }
+        )
     );
 }