From 159a8e105b3fa0d2facd9cec2324d60dd8206a1d Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 10 Aug 2012 13:41:06 +0200 Subject: [PATCH] Implement a few missing endpoints --- lib/travis/api/app/endpoint/artifacts.rb | 2 +- lib/travis/api/app/endpoint/branches.rb | 13 +++++++++++-- lib/travis/api/app/endpoint/builds.rb | 2 +- lib/travis/api/app/endpoint/jobs.rb | 14 ++++++++++++-- lib/travis/api/app/endpoint/repositories.rb | 2 +- lib/travis/api/app/helpers/json_renderer.rb | 4 ++-- spec/endpoint/branches_spec.rb | 2 +- 7 files changed, 29 insertions(+), 10 deletions(-) diff --git a/lib/travis/api/app/endpoint/artifacts.rb b/lib/travis/api/app/endpoint/artifacts.rb index f091881b..88fae5a9 100644 --- a/lib/travis/api/app/endpoint/artifacts.rb +++ b/lib/travis/api/app/endpoint/artifacts.rb @@ -5,7 +5,7 @@ class Travis::Api::App # TODO: Add documentation. class Artifacts < Endpoint # TODO: Add documentation. - get('/:id') { |id| Artifact.find(id) } + get('/:id') { |id| body Artifact.find(id) } end end end diff --git a/lib/travis/api/app/endpoint/branches.rb b/lib/travis/api/app/endpoint/branches.rb index 33066f3e..39d48606 100644 --- a/lib/travis/api/app/endpoint/branches.rb +++ b/lib/travis/api/app/endpoint/branches.rb @@ -4,8 +4,17 @@ class Travis::Api::App class Endpoint # TODO: Add documentation. class Branches < Endpoint - # TODO: Add better implementation and documentation. - get('/') {{ branches: [] }} + # TODO: Add documentation. + get('/') do + body repository, :type => "Branches" + end + + private + + def repository + pass if params.empty? + Repository.find_by(params) || not_found + end end end end diff --git a/lib/travis/api/app/endpoint/builds.rb b/lib/travis/api/app/endpoint/builds.rb index 34780554..911913cc 100644 --- a/lib/travis/api/app/endpoint/builds.rb +++ b/lib/travis/api/app/endpoint/builds.rb @@ -14,7 +14,7 @@ class Travis::Api::App # TODO: Add documentation. get '/:id' do one = params[:repository_id] ? repository.builds : Build - one.includes(:commit, :matrix => [:commit, :log]).find(params[:id]) + body one.includes(:commit, :matrix => [:commit, :log]).find(params[:id]) end private diff --git a/lib/travis/api/app/endpoint/jobs.rb b/lib/travis/api/app/endpoint/jobs.rb index ea99a530..923da07f 100644 --- a/lib/travis/api/app/endpoint/jobs.rb +++ b/lib/travis/api/app/endpoint/jobs.rb @@ -5,10 +5,20 @@ class Travis::Api::App # TODO: Add documentation. class Jobs < Endpoint # TODO: Add implementation and documentation. - get('/') { raise NotImplementedError } + get('/') do + if params[:ids] + Job.where(:id => params[:ids]).includes(:commit, :log) + else + jobs = Job.queued.includes(:commit, :log) + jobs = jobs.where(:queue => params[:queue]) if params[:queue] + jobs + end + end # TODO: Add implementation and documentation. - get('/:id') { raise NotImplementedError } + get('/:id') do + body Job.find(params[:id]) + end end end end diff --git a/lib/travis/api/app/endpoint/repositories.rb b/lib/travis/api/app/endpoint/repositories.rb index 52329b15..90040db2 100644 --- a/lib/travis/api/app/endpoint/repositories.rb +++ b/lib/travis/api/app/endpoint/repositories.rb @@ -14,7 +14,7 @@ class Travis::Api::App end # TODO: Add documentation. - get('/:id') { Repository.find_by(params) } + get('/:id') { body Repository.find_by(params) } end end end diff --git a/lib/travis/api/app/helpers/json_renderer.rb b/lib/travis/api/app/helpers/json_renderer.rb index 835253b0..33eacc24 100644 --- a/lib/travis/api/app/helpers/json_renderer.rb +++ b/lib/travis/api/app/helpers/json_renderer.rb @@ -10,8 +10,8 @@ class Travis::Api::App halt render_json(resource, options) end - def body(value = nil, &block) - value = render_json(value) if value + def body(value = nil, options = {}, &block) + value = render_json(value, options) if value super(value, &block) end diff --git a/spec/endpoint/branches_spec.rb b/spec/endpoint/branches_spec.rb index 5e974a0a..03923cfd 100644 --- a/spec/endpoint/branches_spec.rb +++ b/spec/endpoint/branches_spec.rb @@ -1,5 +1,5 @@ require 'spec_helper' describe Travis::Api::App::Endpoint::Branches do - it 'has to be implemented' + it 'has to be tested' end