about summary refs log tree commit diff
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-09-26 16:25:14 +0200
committerfranck cuny <franck@lumberjaph.net>2010-09-26 16:25:14 +0200
commit228b0f7f9d07e7829c91cf31398ab451736a96e6 (patch)
treeea2c3773229f9fec0d861265e0562e91e65dacf7
parentuse namespace for keys (diff)
downloadjitterbug-228b0f7f9d07e7829c91cf31398ab451736a96e6.tar.gz
rename hook to payload; return 200 when no data in payload
-rw-r--r--lib/jitterbug/Hook.pm29
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/jitterbug/Hook.pm b/lib/jitterbug/Hook.pm
index 568b47b..e5d1082 100644
--- a/lib/jitterbug/Hook.pm
+++ b/lib/jitterbug/Hook.pm
@@ -6,33 +6,40 @@ use jitterbug::Plugin::Redis;
 setting serializer => 'JSON';
 
 post '/' => sub {
-    my $hook = from_json(params->{payload});
+    my $payload = params->{payload};
 
-    my $repo = $hook->{repository}->{name};
+    if (!defined $payload) {
+        # don't confuse poster, and don't care about it
+        status 200;
+        return;
+    }
+
+    $payload = from_json($payload);
+    my $repo = $payload->{repository}->{name};
 
     my $repo_key = key_project($repo);
 
     if ( !redis->exists($repo_key) ) {
         my $project = {
             name        => $repo,
-            url         => $hook->{repository}->{url},
-            description => $hook->{repository}->{description},
-            owner       => $hook->{repository}->{owner},
+            url         => $payload->{repository}->{url},
+            description => $payload->{repository}->{description},
+            owner       => $payload->{repository}->{owner},
         };
         redis->set( $repo_key, to_json($project) );
-        redis->sadd(key_projects, $repo);
+        redis->sadd( key_projects, $repo );
     }
 
-    my $last_commit = pop @{ $hook->{commits} };
+    my $last_commit = pop @{ $payload->{commits} };
 
-    $last_commit->{repo}    = $hook->{repository}->{url};
+    $last_commit->{repo}    = $payload->{repository}->{url};
     $last_commit->{project} = $repo;
-    $last_commit->{compare} = $hook->{compare};
+    $last_commit->{compare} = $payload->{compare};
 
     my $task_key = key_task_repo($repo);
-    redis->set($task_key, to_json($last_commit));
+    redis->set( $task_key, to_json($last_commit) );
 
-    redis->sadd(key_tasks, $task_key);
+    redis->sadd( key_tasks, $task_key );
 
     { updated => $repo };
 };