Class: DebugBundle::Transport::HttpConfigFetcher

Inherits:
Object
  • Object
show all
Defined in:
lib/debugbundle/transport.rb

Instance Method Summary collapse

Constructor Details

#initialize(endpoint, project_token:, sdk_name:, sdk_version:) ⇒ HttpConfigFetcher

Returns a new instance of HttpConfigFetcher.



84
85
86
87
88
89
# File 'lib/debugbundle/transport.rb', line 84

def initialize(endpoint, project_token:, sdk_name:, sdk_version:)
  @uri = URI.parse(Transport.sdk_config_endpoint(endpoint))
  @project_token = project_token
  @sdk_name = sdk_name
  @sdk_version = sdk_version
end

Instance Method Details

#call(etag = nil) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/debugbundle/transport.rb', line 91

def call(etag = nil)
  http = Net::HTTP.new(@uri.host, @uri.port)
  http.use_ssl = @uri.scheme == 'https'
  http.open_timeout = 5
  http.read_timeout = 5

  request = Net::HTTP::Get.new(@uri.request_uri)
  request['Authorization'] = "Bearer #{@project_token}"
  request['Accept'] = 'application/json'
  request['X-DebugBundle-SDK'] = @sdk_name
  request['X-DebugBundle-SDK-Version'] = @sdk_version
  request['If-None-Match'] = etag if etag

  response = http.request(request)
  body = response.body.to_s.empty? ? {} : JSON.parse(response.body)
  { status_code: response.code.to_i, etag: response['ETag'], body: body }
rescue StandardError
  { status_code: 500, body: {} }
end