summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-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;