Class: Gitlab::Client

Inherits:
API
  • Object
show all
Defined in:
lib/gitlab_reviewbot/gitlab.rb

Instance Method Summary collapse

Instance Method Details

#assign_mr_to_users(project_id, mr_iid, users) ⇒ Object



27
28
29
30
# File 'lib/gitlab_reviewbot/gitlab.rb', line 27

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



32
33
34
35
# File 'lib/gitlab_reviewbot/gitlab.rb', line 32

def fetch_author_for_mr(project_id, mr_iid)
  res = merge_request(project_id, mr_iid)
  User.new(res.author.id, res.author.name)
end

#fetch_mrs_requiring_review(project_id) ⇒ Object



37
38
39
# File 'lib/gitlab_reviewbot/gitlab.rb', line 37

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



17
18
19
20
21
22
23
24
25
# File 'lib/gitlab_reviewbot/gitlab.rb', line 17

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

#users_with_pending_mr_review(project_id) ⇒ Object



41
42
43
44
45
# File 'lib/gitlab_reviewbot/gitlab.rb', line 41

def users_with_pending_mr_review(project_id)
  outstanding_mrs = fetch_mrs_requiring_review(project_id)
  outstanding_mrs.reduce([]) { |acc, mr| acc + mr.assignees}
                 .map { |a| User.new(a['id'], a['username']) }
end