summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/jitterbug.pm16
-rw-r--r--lib/jitterbug/Plugin/Template.pm17
-rw-r--r--lib/jitterbug/Project.pm11
-rw-r--r--lib/jitterbug/Task.pm19
-rw-r--r--lib/jitterbug/WebService.pm17
5 files changed, 63 insertions, 17 deletions
diff --git a/lib/jitterbug.pm b/lib/jitterbug.pm
index 7b3b163..8110def 100644
--- a/lib/jitterbug.pm
+++ b/lib/jitterbug.pm
@@ -1,24 +1,20 @@
package jitterbug;
-#BEGIN {
- use Dancer ':syntax';
- use jitterbug::Plugin::Redis;
-#};
+use Dancer ':syntax';
+use jitterbug::Plugin::Redis;
+use jitterbug::Plugin::Template;
our $VERSION = '0.1';
load_app 'jitterbug::Hook', prefix => '/hook';
load_app 'jitterbug::Project', prefix => '/project';
load_app 'jitterbug::WebService', prefix => '/api';
-
-before_template sub {
- my $tokens = shift;
- $tokens->{uri_base} = request->base;
-};
+load_app 'jitterbug::Task', prefix => '/task';
get '/' => sub {
my @projects = redis->smembers(key_projects);
- template 'index', {projects => \@projects};
+ my @builds = redis->smembers(key_tasks);
+ template 'index', {projects => \@projects, builds => \@builds};
};
true;
diff --git a/lib/jitterbug/Plugin/Template.pm b/lib/jitterbug/Plugin/Template.pm
new file mode 100644
index 0000000..d42d70e
--- /dev/null
+++ b/lib/jitterbug/Plugin/Template.pm
@@ -0,0 +1,17 @@
+package jitterbug::Plugin::Template;
+
+use Dancer ':syntax';
+use Dancer::Plugin;
+
+add_hook(
+ 'before_template',
+ sub {
+ my $tokens = shift;
+ $tokens->{uri_base} = request->base;
+ print "on a " . $tokens->{uri_base} . "\n";
+ }
+);
+
+register_plugin;
+
+1;
diff --git a/lib/jitterbug/Project.pm b/lib/jitterbug/Project.pm
index b330635..be62921 100644
--- a/lib/jitterbug/Project.pm
+++ b/lib/jitterbug/Project.pm
@@ -2,6 +2,7 @@ package jitterbug::Project;
use Dancer ':syntax';
use jitterbug::Plugin::Redis;
+use jitterbug::Plugin::Template;
use DateTime;
use XML::Feed;
@@ -42,9 +43,15 @@ get '/:project/feed' => sub {
foreach my $version (keys %{$desc->{version}}) {
my $entry = XML::Feed::Entry->new();
- $entry->title("build for ".$desc->{commit}.' on '.$version);
- $entry->summary("Result: ".$desc->{version}->{$version});
+ $entry->link( request->base
+ . 'api/build/'
+ . $project . '/'
+ . $desc->{commit} . '/'
+ .$version );
+ $entry->title( "build for " . $desc->{commit} . ' on ' . $version );
+ $entry->summary( "Result: " . $desc->{version}->{$version} );
$feed->add_entry($entry);
+
}
}
diff --git a/lib/jitterbug/Task.pm b/lib/jitterbug/Task.pm
new file mode 100644
index 0000000..bef99bc
--- /dev/null
+++ b/lib/jitterbug/Task.pm
@@ -0,0 +1,19 @@
+package jitterbug::Task;
+
+use Dancer ':syntax';
+use jitterbug::Plugin::Redis;
+use jitterbug::Plugin::Template;
+
+get '/:task_id' => sub {
+ my $task_id = params->{task_id};
+
+ my $task = redis->get($task_id);
+
+ if (!$task) {
+ render_error("task doesn't exists", 404);
+ }
+
+ template 'task/index', {task => from_json($task)};
+};
+
+1;
diff --git a/lib/jitterbug/WebService.pm b/lib/jitterbug/WebService.pm
index 62f55c0..c8be8fd 100644
--- a/lib/jitterbug/WebService.pm
+++ b/lib/jitterbug/WebService.pm
@@ -21,11 +21,18 @@ get '/build/:project/:commit/:version' => sub {
open my $fh, '<', $file;
my @content = <$fh>;
close $fh;
- {
- commit => $commit,
- version => $version,
- content => join( '', @content ),
- };
+
+ if ( request->accept =~ m!application/json! ) {
+ return {
+ commit => $commit,
+ version => $version,
+ content => join( '', @content ),
+ };
+ }
+ else {
+ content_type 'text/plain';
+ return join( '', @content );
+ }
}
};