Class: Gitlab::ClientHelper
- Inherits:
-
Object
- Object
- Gitlab::ClientHelper
- Defined in:
- lib/gitlab_reviewbot/gitlab.rb
Instance Method Summary collapse
- #assign_mr_to_users(project_id, mr_iid, users) ⇒ Object
- #fetch_author_for_mr(project_id, mr_iid) ⇒ Object
- #fetch_mr_reviewers(project_id, mr_iid) ⇒ Object
- #fetch_mrs_requiring_review(project_id) ⇒ Object
- #fetch_users_for_group(group_name) ⇒ Object
- #find_user_with_username(username) ⇒ Object
-
#initialize(client) ⇒ ClientHelper
constructor
A new instance of ClientHelper.
- #users_with_pending_mr_review(project_id) ⇒ Object
Constructor Details
#initialize(client) ⇒ ClientHelper
Returns a new instance of ClientHelper.
23 24 25 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 23 def initialize(client) @client = client end |
Instance Method Details
#assign_mr_to_users(project_id, mr_iid, users) ⇒ Object
54 55 56 57 58 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 54 def assign_mr_to_users(project_id, mr_iid, users) user_ids = users.map(&:id) @client.update_merge_request(project_id, mr_iid, "reviewer_ids" => user_ids) end |
#fetch_author_for_mr(project_id, mr_iid) ⇒ Object
60 61 62 63 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 60 def (project_id, mr_iid) res = @client.merge_request(project_id, mr_iid) User.new(res..id, res..name) end |
#fetch_mr_reviewers(project_id, mr_iid) ⇒ Object
69 70 71 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 69 def fetch_mr_reviewers(project_id, mr_iid) @client.merge_request(project_id, mr_iid).reviewers.map { |u| User.new(u["id"], u["username"]) } end |
#fetch_mrs_requiring_review(project_id) ⇒ Object
40 41 42 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 40 def fetch_mrs_requiring_review(project_id) @client.merge_requests(project_id, state: "opened", per_page: "100") end |
#fetch_users_for_group(group_name) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 44 def fetch_users_for_group(group_name) group_id = search_group_with_path(group_name) return nil if group_id.nil? res = @client.group_members(group_id, :per_page => 100, :show_seat_info => true) developer_access_level = 30 res.select { |u| u.state == "active" && u.access_level >= developer_access_level && u.is_using_seat }.map { |u| User.new(u.id, u.username) } end |
#find_user_with_username(username) ⇒ Object
65 66 67 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 65 def find_user_with_username(username) @client.users({ username: username }).map { |u| User.new(u.id, u.username) } end |
#users_with_pending_mr_review(project_id) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 27 def users_with_pending_mr_review(project_id) outstanding_mrs = fetch_mrs_requiring_review(project_id) all_assignees = outstanding_mrs.reduce([]) { |acc, mr| acc + mr.reviewers - assignees_with_review(project_id, mr.iid, mr.reviewers)} assignees_id_map = all_assignees.each_with_object({}) do |a, acc| aid = a["id"] ausername = a["username"] assignee = acc[aid] || User.new(aid, ausername) assignee.review_count += 1 acc[aid] = assignee end assignees_id_map.values end |