Class: Gitlab::Client
- Inherits:
-
API
- Object
- API
- Gitlab::Client
- 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
- #users_with_pending_mr_review(project_id) ⇒ Object
Instance Method Details
#assign_mr_to_users(project_id, mr_iid, users) ⇒ Object
31 32 33 34 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 31 def assign_mr_to_users(project_id, mr_iid, users) user_ids = users.map(&:id) update_merge_request(project_id, mr_iid, 'assignee_ids' => user_ids) end |
#fetch_author_for_mr(project_id, mr_iid) ⇒ Object
36 37 38 39 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 36 def (project_id, mr_iid) res = merge_request(project_id, mr_iid) User.new(res..id, res..name) end |
#fetch_mr_reviewers(project_id, mr_iid) ⇒ Object
63 64 65 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 63 def fetch_mr_reviewers(project_id, mr_iid) merge_request(project_id, mr_iid).assignees.map { |u| User.new(u['id'], u['username']) } end |
#fetch_mrs_requiring_review(project_id) ⇒ Object
41 42 43 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 41 def fetch_mrs_requiring_review(project_id) merge_requests(project_id, :state => 'opened', :per_page => '100').select { |mr| mr.merge_status != 'can_be_merged' } end |
#fetch_users_for_group(group_name) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 21 def fetch_users_for_group(group_name) group_id = search_group(group_name) return nil if group_id.nil? res = group_members(group_id) developer_access_level = 30 res.select { |u| u.state == 'active' && u.access_level >= developer_access_level }.map { |u| User.new(u.id, u.username) } end |
#find_user_with_username(username) ⇒ Object
45 46 47 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 45 def find_user_with_username(username) users({:username => username}).map { |u| User.new(u.id, u.username) } end |
#users_with_pending_mr_review(project_id) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/gitlab_reviewbot/gitlab.rb', line 49 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.assignees } assignees_id_map = all_assignees.reduce({}) { |acc, a| aid = a['id'] ausername = a['username'] assignee = acc[aid] || User.new(aid, ausername) assignee.review_count += 1 acc[aid] = assignee acc } assignees_id_map.values end |