diff --git a/lib/travis/api/v3/access_control/generic.rb b/lib/travis/api/v3/access_control/generic.rb index a8a6dab5..a00a6c58 100644 --- a/lib/travis/api/v3/access_control/generic.rb +++ b/lib/travis/api/v3/access_control/generic.rb @@ -59,6 +59,10 @@ module Travis::API::V3 visible? branch.repository end + def cron_visible?(cron) + visible? cron.repository + end + def job_visible?(job) visible? job.repository end diff --git a/lib/travis/api/v3/models/cron.rb b/lib/travis/api/v3/models/cron.rb new file mode 100644 index 00000000..11c50eea --- /dev/null +++ b/lib/travis/api/v3/models/cron.rb @@ -0,0 +1,7 @@ +module Travis::API::V3 + class Models::Cron < Model + + belongs_to :repository + + end +end diff --git a/lib/travis/api/v3/models/repository.rb b/lib/travis/api/v3/models/repository.rb index 6bf8f4de..b58fde6a 100644 --- a/lib/travis/api/v3/models/repository.rb +++ b/lib/travis/api/v3/models/repository.rb @@ -6,6 +6,7 @@ module Travis::API::V3 has_many :builds, dependent: :delete_all, order: 'builds.id DESC'.freeze has_many :permissions, dependent: :delete_all has_many :users, through: :permissions + has_many :crons, dependent: :delete_all belongs_to :owner, polymorphic: true belongs_to :last_build, class_name: 'Travis::API::V3::Models::Build'.freeze diff --git a/lib/travis/api/v3/queries/cron.rb b/lib/travis/api/v3/queries/cron.rb index 4bc66967..25c38191 100644 --- a/lib/travis/api/v3/queries/cron.rb +++ b/lib/travis/api/v3/queries/cron.rb @@ -5,8 +5,8 @@ module Travis::API::V3 sortable_by :id def find - return Models::Repository.find_by_id(id) if id - raise WrongParams, 'missing job.id'.freeze + return Models::Cron.find_by_id(id) if id + raise WrongParams, 'missing cron.id'.freeze end end end diff --git a/lib/travis/api/v3/renderer/cron.rb b/lib/travis/api/v3/renderer/cron.rb index 9a2b28bc..7f4c93fc 100644 --- a/lib/travis/api/v3/renderer/cron.rb +++ b/lib/travis/api/v3/renderer/cron.rb @@ -2,54 +2,8 @@ require 'travis/api/v3/renderer/model_renderer' module Travis::API::V3 class Renderer::Cron < Renderer::ModelRenderer - representation(:minimal, :id, :name, :slug) - representation(:standard, :id, :name, :slug, :description, :github_language, :active, :private, :owner, :default_branch) + representation(:minimal, :id) + representation(:standard, :id, :repository) - def active - !!model.active - end - - def default_branch - return model.default_branch if include_default_branch? - { - :@type => 'branch'.freeze, - :@href => Renderer.href(:branch, name: model.default_branch_name, repository_id: id, script_name: script_name), - :@representation => 'minimal'.freeze, - :name => model.default_branch_name - } - end - - def include_default_branch? - return true if include? 'repository.default_branch'.freeze - return true if include.any? { |i| i.start_with? 'branch'.freeze } - return true if included.any? { |i| i.is_a? Models::Branch and i.respository_id == id and i.name == i.default_branch_name } - end - - def owner - return model.owner if include_owner? - owner_href = Renderer.href(owner_type.to_sym, id: model.owner_id, script_name: script_name) - - if included_owner? and owner_href - { :@href => owner_href } - else - result = { :@type => owner_type, :id => model.owner_id, :login => model.owner_name } - result[:@href] = owner_href if owner_href - result - end - end - - def include_owner? - return false if included_owner? - return true if include? 'repository.owner'.freeze - return true if include.any? { |i| i.start_with? owner_type or i.start_with? 'owner'.freeze } - end - - def included_owner? - included.any? { |i| i.is_a? Model and i.class.polymorphic_name == model.owner_type and i.id == model.owner_id } - end - - def owner_type - @owner_type ||= model.owner_type.downcase if model.owner_type - end end end diff --git a/lib/travis/api/v3/services/cron/find.rb b/lib/travis/api/v3/services/cron/find.rb index 6a191d7a..a7ea8958 100644 --- a/lib/travis/api/v3/services/cron/find.rb +++ b/lib/travis/api/v3/services/cron/find.rb @@ -5,5 +5,6 @@ module Travis::API::V3 def run! find end + end end