Sha256: 028d4467e9b7871196f0bda651af287b1c7518de945dc047a5004299344835a8

Contents?: true

Size: 787 Bytes

Versions: 3

Compression:

Stored size: 787 Bytes

Contents

require 'active_support/all'
require 'net/protocol'

require_relative 'retryable'

module Gitlab
  module Triage
    class Network
      include Retryable

      def initialize(adapter)
        @adapter = adapter
      end

      def query_api(token, url)
        response = {}
        resources = []

        begin
          print '.'
          response = execute_with_retry(Net::ReadTimeout) do
            @adapter.get(token, response.fetch(:next_page_url) { url })
          end
          resources += response.delete(:results)
        end while response.delete(:more_pages)

        resources.map!(&:with_indifferent_access)
      rescue Net::ReadTimeout
        []
      end

      def post_api(token, url, body)
        @adapter.post(token, url, body)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gitlab-triage-0.0.3 lib/gitlab/triage/network.rb
gitlab-triage-0.0.2 lib/gitlab/triage/network.rb
gitlab-triage-0.0.1 lib/gitlab/triage/network.rb