Add an endpoint to get the user's repositories
This commit is contained in:
parent
e2f7f32a60
commit
6418c6f88e
2 changed files with 69 additions and 2 deletions
|
@ -4,9 +4,19 @@ module Bitbucket
|
|||
@connection = options.fetch(:connection, Connection.new(options))
|
||||
end
|
||||
|
||||
|
||||
def repos
|
||||
relative_path = "/repositories/#{user.username}"
|
||||
paginator = Paginator.new(connection, relative_path, :repo)
|
||||
|
||||
Collection.new(paginator)
|
||||
end
|
||||
|
||||
def user
|
||||
parsed_response = connection.get('/user')
|
||||
Representation::User.new(parsed_response)
|
||||
@user ||= begin
|
||||
parsed_response = connection.get('/user')
|
||||
Representation::User.new(parsed_response)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
|
57
lib/bitbucket/representation/repo.rb
Normal file
57
lib/bitbucket/representation/repo.rb
Normal file
|
@ -0,0 +1,57 @@
|
|||
module Bitbucket
|
||||
module Representation
|
||||
class Repo < Representation::Base
|
||||
attr_reader :owner, :slug
|
||||
|
||||
def initialize(raw)
|
||||
super(raw)
|
||||
|
||||
if full_name && full_name.split('/').size == 2
|
||||
@owner, @slug = full_name.split('/')
|
||||
end
|
||||
end
|
||||
|
||||
def clone_url(token = nil)
|
||||
url = raw['links']['clone'].find { |link| link['name'] == 'https' }.fetch('href')
|
||||
|
||||
if token.present?
|
||||
url.sub(/^[^\@]*/, "https://x-token-auth:#{token}")
|
||||
else
|
||||
url
|
||||
end
|
||||
end
|
||||
|
||||
def description
|
||||
raw['description']
|
||||
end
|
||||
|
||||
def full_name
|
||||
raw['full_name']
|
||||
end
|
||||
|
||||
def has_issues?
|
||||
raw['has_issues']
|
||||
end
|
||||
|
||||
def name
|
||||
raw['name']
|
||||
end
|
||||
|
||||
def valid?
|
||||
raw['scm'] == 'git'
|
||||
end
|
||||
|
||||
def visibility_level
|
||||
if raw['is_private']
|
||||
Gitlab::VisibilityLevel::PRIVATE
|
||||
else
|
||||
Gitlab::VisibilityLevel::PUBLIC
|
||||
end
|
||||
end
|
||||
|
||||
def to_s
|
||||
full_name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue