diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-08-22 15:53:46 -0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2016-11-21 16:47:25 -0800 |
commit | 6418c6f88efe9015c8bc2ebd4f7db1a7277a4dc9 (patch) | |
tree | 8481da24ef8418130a68fc2d9f82b7ed1ad0f8a5 /lib/bitbucket | |
parent | e2f7f32a60a7663d12b5dae0320f640150f354e7 (diff) | |
download | gitlab-ce-6418c6f88efe9015c8bc2ebd4f7db1a7277a4dc9.tar.gz |
Add an endpoint to get the user's repositories
Diffstat (limited to 'lib/bitbucket')
-rw-r--r-- | lib/bitbucket/client.rb | 14 | ||||
-rw-r--r-- | lib/bitbucket/representation/repo.rb | 57 |
2 files changed, 69 insertions, 2 deletions
diff --git a/lib/bitbucket/client.rb b/lib/bitbucket/client.rb index c05fc35f36e..39b52ae25a6 100644 --- a/lib/bitbucket/client.rb +++ b/lib/bitbucket/client.rb @@ -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 diff --git a/lib/bitbucket/representation/repo.rb b/lib/bitbucket/representation/repo.rb new file mode 100644 index 00000000000..fe5cda66ab9 --- /dev/null +++ b/lib/bitbucket/representation/repo.rb @@ -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 |