29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/gitlab/triage/rest_api_network.rb', line 29
def query_api(url)
response = {}
resources = []
begin
print '.'
url = response.fetch(:next_page_url) { url }
response = execute_with_retry(
exception_types: [Net::ReadTimeout, Errors::Network::InternalServerError],
backoff_exceptions: Errors::Network::TooManyRequests, debug: options.debug) do
puts Gitlab::Triage::UI.debug "query_api: #{url}" if options.debug
@adapter.get(token, url)
end
results = response.delete(:results)
case results
when Array
resources.concat(results)
when Hash
if results['message']&.match?(/404 Group|Project Not Found/)
raise_unexpected_response(results)
else
resources << results
end
else
raise_unexpected_response(results)
end
rate_limit_debug(response) if options.debug
rate_limit_wait(response)
end while response.delete(:more_pages)
resources.map!(&:with_indifferent_access)
end
|