diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/jitterbug.pm | 16 | ||||
-rw-r--r-- | lib/jitterbug/Plugin/Template.pm | 17 | ||||
-rw-r--r-- | lib/jitterbug/Project.pm | 11 | ||||
-rw-r--r-- | lib/jitterbug/Task.pm | 19 | ||||
-rw-r--r-- | lib/jitterbug/WebService.pm | 17 |
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 ); + } } }; |