about summary refs log tree commit diff
path: root/lib/jitterbug
diff options
context:
space:
mode:
Diffstat (limited to 'lib/jitterbug')
-rw-r--r--lib/jitterbug/Project.pm43
1 files changed, 22 insertions, 21 deletions
diff --git a/lib/jitterbug/Project.pm b/lib/jitterbug/Project.pm
index 0d2db8e..0a3f984 100644
--- a/lib/jitterbug/Project.pm
+++ b/lib/jitterbug/Project.pm
@@ -16,44 +16,31 @@ get '/:project' => sub {
 
     my $desc = from_json($res);
 
-    my @ids = redis->smembers( key_builds_project($project) );
-
-    my @builds;
-    foreach my $id (@ids) {
-        my $res = redis->get($id);
-        push @builds, from_json($res) if $res;
-    }
-
-    @builds = sort {$b->{timestamp} cmp $a->{timestamp}} @builds;
+    my $builds = _sorted_builds($project);
 
     template 'project/index',
-      { project => $project, builds => \@builds, %$desc };
+      { project => $project, builds => $builds, %$desc };
 };
 
 get '/:project/feed' => sub {
     my $project = params->{project};
 
-    my @builds = reverse( redis->smembers( key_builds_project($project) ) );
+    my $builds = _sorted_builds($project);
 
     my $feed = XML::Feed->new('Atom');
     $feed->title('builds for '.$project);
 
-    foreach (splice(@builds, 0, 5)) {
-        my $res = redis->get($_);
-        next unless $res;
-        my $desc = from_json($res);
-
-        foreach my $version (keys %{$desc->{version}}) {
+    foreach my $build (@$builds) {
+        foreach my $version (keys %{$build->{version}}) {
             my $entry = XML::Feed::Entry->new();
             $entry->link( request->base
                   . 'api/build/'
                   . $project . '/'
-                  . $desc->{commit} . '/'
+                  . $build->{commit} . '/'
                   .$version );
-            $entry->title( "build for " . $desc->{commit} . ' on ' . $version );
-            $entry->summary( "Result: " . $desc->{version}->{$version} );
+            $entry->title( "build for " . $build->{commit} . ' on ' . $version );
+            $entry->summary( "Result: " . $build->{version}->{$version} );
             $feed->add_entry($entry);
-
         }
     }
 
@@ -61,4 +48,18 @@ get '/:project/feed' => sub {
     $feed->as_xml;
 };
 
+sub _sorted_builds {
+    my $project = shift;
+
+    my @ids = redis->smembers( key_builds_project($project) );
+
+    my @builds;
+    foreach my $id (@ids) {
+        my $res = redis->get($id);
+        push @builds, from_json($res) if $res;
+    }
+    @builds = sort {$b->{timestamp} cmp $a->{timestamp}} @builds;
+    \@builds;
+}
+
 1;