lib/neetob/cli/cronitor/base.rb in neetob-0.5.32 vs lib/neetob/cli/cronitor/base.rb in neetob-0.5.33

- old
+ new

@@ -30,19 +30,35 @@ raise(StandardError, "Request failed with status code #{http_result.code}: #{error_message}") end end def get(username:, password:, headers: { "Accept" => "application/json" }) - uri = URI(MONITORS_URL) - request = Net::HTTP::Get.new(uri) - headers.each { |key, value| request[key] = value } - request.basic_auth(username, password) + monitors = [] + move_to_next_page = true + page = 1 + while move_to_next_page + url_to_fetch_from = MONITORS_URL + url_to_fetch_from += "?page=#{page}" if page > 1 + uri = URI(url_to_fetch_from) + request = Net::HTTP::Get.new(uri) + headers.each { |key, value| request[key] = value } + request.basic_auth(username, password) - response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http| - http.request(request) - end + response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http| + http.request(request) + end - parse_response(response) + parsed_response = parse_response(response) + total_monitor_count = parsed_response[:total_monitor_count] + page_size = parsed_response[:page_size] + if total_monitor_count > (page * page_size) + page += 1 + else + move_to_next_page = false + end + monitors += parsed_response[:monitors] + end + monitors end end end end end