Method: Onceover::VendoredModules#github_get

Defined in:
lib/onceover/vendored_modules.rb

#github_get(url, params) ⇒ Object

Given a github url and optional query parameters, return the parsed json body



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/onceover/vendored_modules.rb', line 155

def github_get(url, params)
  uri = URI.parse(url)
  uri.query = URI.encode_www_form(params) if params
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == 'https')
  request = Net::HTTP::Get.new(uri.request_uri)
  request['Accept'] = 'application/vnd.github.raw+json'
  request['X-GitHub-Api-Version'] = '2022-11-28'
  response = http.request(request)

  case response
  when Net::HTTPOK # 200
    MultiJson.load(response.body)
  else
    # Expose the ratelimit response headers
    # https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#checking-the-status-of-your-rate-limit
    ratelimit_headers = response.to_hash.select { |k, _v| k =~ /x-ratelimit.*/ }
    raise "#{response.code} #{response.message} #{ratelimit_headers}"
  end
end