2018-12-13 13:39:08 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-08-17 22:00:37 +05:30
|
|
|
module Bitbucket
|
|
|
|
class Client
|
|
|
|
attr_reader :connection
|
|
|
|
|
|
|
|
def initialize(options = {})
|
|
|
|
@connection = Connection.new(options)
|
|
|
|
end
|
|
|
|
|
2022-11-25 23:54:43 +05:30
|
|
|
def last_issue(repo)
|
|
|
|
parsed_response = connection.get("/repositories/#{repo}/issues?pagelen=1&sort=-created_on&state=ALL")
|
|
|
|
Bitbucket::Representation::Issue.new(parsed_response['values'].first)
|
|
|
|
end
|
|
|
|
|
2017-08-17 22:00:37 +05:30
|
|
|
def issues(repo)
|
|
|
|
path = "/repositories/#{repo}/issues"
|
|
|
|
get_collection(path, :issue)
|
|
|
|
end
|
|
|
|
|
|
|
|
def issue_comments(repo, issue_id)
|
|
|
|
path = "/repositories/#{repo}/issues/#{issue_id}/comments"
|
|
|
|
get_collection(path, :comment)
|
|
|
|
end
|
|
|
|
|
|
|
|
def pull_requests(repo)
|
|
|
|
path = "/repositories/#{repo}/pullrequests?state=ALL"
|
|
|
|
get_collection(path, :pull_request)
|
|
|
|
end
|
|
|
|
|
|
|
|
def pull_request_comments(repo, pull_request)
|
|
|
|
path = "/repositories/#{repo}/pullrequests/#{pull_request}/comments"
|
|
|
|
get_collection(path, :pull_request_comment)
|
|
|
|
end
|
|
|
|
|
|
|
|
def pull_request_diff(repo, pull_request)
|
|
|
|
path = "/repositories/#{repo}/pullrequests/#{pull_request}/diff"
|
|
|
|
connection.get(path)
|
|
|
|
end
|
|
|
|
|
|
|
|
def repo(name)
|
|
|
|
parsed_response = connection.get("/repositories/#{name}")
|
|
|
|
Representation::Repo.new(parsed_response)
|
|
|
|
end
|
|
|
|
|
2019-12-21 20:55:43 +05:30
|
|
|
def repos(filter: nil)
|
2017-08-17 22:00:37 +05:30
|
|
|
path = "/repositories?role=member"
|
2019-12-21 20:55:43 +05:30
|
|
|
path += "&q=name~\"#{filter}\"" if filter
|
|
|
|
|
2017-08-17 22:00:37 +05:30
|
|
|
get_collection(path, :repo)
|
|
|
|
end
|
|
|
|
|
|
|
|
def user
|
|
|
|
@user ||= begin
|
|
|
|
parsed_response = connection.get('/user')
|
|
|
|
Representation::User.new(parsed_response)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def get_collection(path, type)
|
|
|
|
paginator = Paginator.new(connection, path, type)
|
|
|
|
Collection.new(paginator)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|