diff --git a/lib/travis/api/v3/queries/jobs.rb b/lib/travis/api/v3/queries/jobs.rb new file mode 100644 index 00000000..b698b296 --- /dev/null +++ b/lib/travis/api/v3/queries/jobs.rb @@ -0,0 +1,21 @@ +module Travis::API::V3 + class Queries::Jobs < Query + params :state, :event_type, :previous_state, prefix: :job + params :name, prefix: :branch, method_name: :branch_name + + sortable_by :id, :started_at, :finished_at + + def find(build) + sort filter(build.jobs) + end + + def filter(list) + list = list.where(state: list(state)) if state + list = list.where(previous_state: list(previous_state)) if previous_state + list = list.where(event_type: list(event_type)) if event_type + list = list.where(branch: list(branch_name)) if branch_name + + list + end + end +end diff --git a/lib/travis/api/v3/routes.rb b/lib/travis/api/v3/routes.rb index 3ba42268..b9765166 100644 --- a/lib/travis/api/v3/routes.rb +++ b/lib/travis/api/v3/routes.rb @@ -20,6 +20,11 @@ module Travis::API::V3 post :cancel, '/cancel' post :restart, '/restart' + + resource :jobs do + route '/jobs' + get :find + end end resource :job do diff --git a/lib/travis/api/v3/service_index.rb b/lib/travis/api/v3/service_index.rb index 6c76d53d..087e11eb 100644 --- a/lib/travis/api/v3/service_index.rb +++ b/lib/travis/api/v3/service_index.rb @@ -42,7 +42,6 @@ module Travis::API::V3 Routes::Resource.new(:account), # dummy as there are only accounts routes right now Routes::Resource.new(:broadcast), # dummy as there are only broadcasts routes right now Routes::Resource.new(:commit), # dummy as commits can only be embedded - Routes::Resource.new(:jobs), # dummy as there are no direct jobs routes Routes::Resource.new(:request), # dummy as there are only requests routes right now Routes::Resource.new(:error), Routes::Resource.new(:home, attributes: [:config, :errors, :resources], actions: home_actions), diff --git a/lib/travis/api/v3/services/jobs/find.rb b/lib/travis/api/v3/services/jobs/find.rb new file mode 100644 index 00000000..7d63dfd4 --- /dev/null +++ b/lib/travis/api/v3/services/jobs/find.rb @@ -0,0 +1,8 @@ +module Travis::API::V3 + class Services::Jobs::Find < Service + paginate + def run! + query.find(find(:build)) + end + end +end