diff --git a/lib/travis/api/v3/access_control/generic.rb b/lib/travis/api/v3/access_control/generic.rb index a00a6c58..634d44dd 100644 --- a/lib/travis/api/v3/access_control/generic.rb +++ b/lib/travis/api/v3/access_control/generic.rb @@ -63,6 +63,10 @@ module Travis::API::V3 visible? cron.repository end + def cron_writable?(cron) + writable? cron.repository + end + def job_visible?(job) visible? job.repository end diff --git a/lib/travis/api/v3/permissions/cron.rb b/lib/travis/api/v3/permissions/cron.rb new file mode 100644 index 00000000..815dd17c --- /dev/null +++ b/lib/travis/api/v3/permissions/cron.rb @@ -0,0 +1,9 @@ +require 'travis/api/v3/permissions/generic' + +module Travis::API::V3 + class Permissions::Cron < Permissions::Generic + def delete? + write? + end + end +end diff --git a/lib/travis/api/v3/routes.rb b/lib/travis/api/v3/routes.rb index 6482c1d4..afb6b910 100644 --- a/lib/travis/api/v3/routes.rb +++ b/lib/travis/api/v3/routes.rb @@ -33,6 +33,8 @@ module Travis::API::V3 route '/cron/{cron.id}' get :find + get :delete, '/delete' + end resource :job do diff --git a/lib/travis/api/v3/services/cron/delete.rb b/lib/travis/api/v3/services/cron/delete.rb new file mode 100644 index 00000000..24753439 --- /dev/null +++ b/lib/travis/api/v3/services/cron/delete.rb @@ -0,0 +1,12 @@ +module Travis::API::V3 + class Services::Cron::Delete < Service + #params :id + + def run! + raise LoginRequired unless access_control.logged_in? or access_control.full_access? + + access_control.permissions(cron).delete! + find.destroy + end + end +end diff --git a/lib/travis/api/v3/services/cron/find.rb b/lib/travis/api/v3/services/cron/find.rb index a7ea8958..6a028079 100644 --- a/lib/travis/api/v3/services/cron/find.rb +++ b/lib/travis/api/v3/services/cron/find.rb @@ -3,6 +3,7 @@ module Travis::API::V3 #params :id def run! + find end