From 8890d596f5fa014e0043c4e270541355d84cebab Mon Sep 17 00:00:00 2001 From: franck cuny Date: Sat, 25 Sep 2010 17:38:33 +0200 Subject: sorted builds for feed --- lib/jitterbug/Project.pm | 43 ++++++++++++++++++++++--------------------- 1 file 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; -- cgit 1.4.1