lib/bender/main.rb in bender-bot-0.6.1 vs lib/bender/main.rb in bender-bot-0.6.2

- old
+ new

@@ -132,11 +132,11 @@ return end open_incidents = incidents.select do |i| status = normalize_value i['fields']['status'] - severity = short_severity(i['fields'][SEVERITY_FIELD]['value']) + severity = short_severity(i['fields'][SEVERITY_FIELD]['value']) rescue '' is_open = !(status =~ /resolved|closed/i) is_severe = severity =~ /(SEV1|SEV2)/i is_open && is_severe end @@ -274,38 +274,45 @@ end end def periodically_refresh_group bot - req_path = '/rest/api/2/group' - req_params = QueryParams.encode \ - groupname: config[:jira_group], - expand: 'users' - - uri = URI(config[:jira_site] + req_path + '?' + req_params) - http = Net::HTTP.new uri.hostname, uri.port - - req = Net::HTTP::Get.new uri - req.basic_auth config[:jira_user], config[:jira_pass] - req['Content-Type'] = 'application/json' - req['Accept'] = 'application/json' - Thread.new do loop do begin - resp = http.request req - data = JSON.parse resp.body + req_path = '/rest/api/2/group/member' + is_last, values, start = false, [], 0 + until is_last + req_params = QueryParams.encode \ + groupname: config[:jira_group], + startAt: start + + uri = URI(config[:jira_site] + req_path + '?' + req_params) + http = Net::HTTP.new uri.hostname, uri.port + + req = Net::HTTP::Get.new uri + req.basic_auth config[:jira_user], config[:jira_pass] + req['Content-Type'] = 'application/json' + req['Accept'] = 'application/json' + + resp = http.request req + data = JSON.parse resp.body + values += data['values'] + is_last = data['isLast'] + start += data['maxResults'] + end + + user_names = values.map { |u| u['displayName'] } + bot.store['group'] = user_names + sleep config[:group_refresh] + rescue StandardError => e log.error \ message: 'Could not periodically refresh group', - error: e.class + error: e.class, + data: resp.body sleep 5 - next end - - user_names = data['users']['items'].map { |u| u['displayName'] } - bot.store['group'] = user_names - sleep config[:group_refresh] end end end end