start working on repos by owner endpoint
This commit is contained in:
parent
2485de7d44
commit
d8f1075491
|
@ -9,6 +9,11 @@ module Travis::API::V3
|
|||
new
|
||||
end
|
||||
|
||||
def visible_repositories(list)
|
||||
return [] unless unrestricted_api?
|
||||
list.where(private: false)
|
||||
end
|
||||
|
||||
def admin_for(repository)
|
||||
raise LoginRequired
|
||||
end
|
||||
|
|
|
@ -30,6 +30,12 @@ module Travis::API::V3
|
|||
false
|
||||
end
|
||||
|
||||
def visible_repositories(list)
|
||||
# naïve implementation, replaced with smart implementation in specific subclasses
|
||||
return list if full_access?
|
||||
list.select { |r| visible?(r) }
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def build_visible?(build)
|
||||
|
|
|
@ -19,6 +19,10 @@ module Travis::API::V3
|
|||
permission?(:admin, repository) ? user : super
|
||||
end
|
||||
|
||||
def visible_repositories(list)
|
||||
list.where('repositories.private = false OR repositories.id IN ?'.freeze, permissions.map(&:repository_id))
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def repository_writable?(repository)
|
||||
|
|
|
@ -6,16 +6,21 @@ module Travis::API::V3
|
|||
all.joins(:users).where(users: user_condition(user))
|
||||
end
|
||||
|
||||
def for_owner(owner)
|
||||
filter(owner.repositories)
|
||||
end
|
||||
|
||||
def all
|
||||
@all ||= begin
|
||||
all = Models::Repository
|
||||
all = all.where(active: bool(active)) unless active.nil?
|
||||
all = all.where(private: bool(private)) unless private.nil?
|
||||
all = all.includes(:owner) if includes? 'repository.owner'.freeze
|
||||
all = all.includes(:last_build) if includes? 'repository.last_build'.freeze
|
||||
all = all.includes(:default_branch)
|
||||
all
|
||||
end
|
||||
@all ||= filter(Models::Repository)
|
||||
end
|
||||
|
||||
def filter(list)
|
||||
list = list.where(active: bool(active)) unless active.nil?
|
||||
list = list.where(private: bool(private)) unless private.nil?
|
||||
list = list.includes(:owner) if includes? 'repository.owner'.freeze
|
||||
list = list.includes(:last_build) if includes? 'repository.last_build'.freeze
|
||||
list = list.includes(:default_branch)
|
||||
list
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,6 +11,7 @@ module Travis::API::V3
|
|||
resource :owner do
|
||||
route '/owner/({owner.login}|{user.login}|{organization.login})'
|
||||
get :find
|
||||
get :repositories, '/repos'
|
||||
end
|
||||
|
||||
resource :repository do
|
||||
|
|
10
lib/travis/api/v3/services/owner/repositories.rb
Normal file
10
lib/travis/api/v3/services/owner/repositories.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
module Travis::API::V3
|
||||
class Services::Owner::Repositories < Service
|
||||
result_type :repositories
|
||||
|
||||
def run!
|
||||
unfiltered = query(:repositories).for_owner(find)
|
||||
access_control.visible_repositories(unfiltered)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user