class Gitlab::Triage::NetworkAdapters::HttpartyAdapter

Public Instance Methods

get(token, url) click to toggle source
# File lib/gitlab/triage/network_adapters/httparty_adapter.rb, line 11
def get(token, url)
  response = HTTParty.get(
    url,
    headers: {
      'User-Agent' => USER_AGENT,
      'Content-type' => 'application/json',
      'PRIVATE-TOKEN' => token
    }
  )

  raise_on_unauthorized_error!(response)
  raise_on_internal_server_error!(response)
  raise_on_too_many_requests!(response)

  {
    more_pages: (response.headers["x-next-page"].to_s != ""),
    next_page_url: next_page_url(url, response),
    results: response.parsed_response,
    ratelimit_remaining: response.headers["ratelimit-remaining"].to_i,
    ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i)
  }
end
post(token, url, body) click to toggle source
# File lib/gitlab/triage/network_adapters/httparty_adapter.rb, line 34
def post(token, url, body)
  response = HTTParty.post(
    url,
    body: body.to_json,
    headers: {
      'User-Agent' => "GitLab Triage #{Gitlab::Triage::VERSION}",
      'Content-type' => 'application/json',
      'PRIVATE-TOKEN' => token
    }
  )

  raise_on_unauthorized_error!(response)
  raise_on_internal_server_error!(response)
  raise_on_too_many_requests!(response)

  {
    results: response.parsed_response,
    ratelimit_remaining: response.headers["ratelimit-remaining"].to_i,
    ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i)
  }
end

Private Instance Methods

next_page_url(url, response) click to toggle source
# File lib/gitlab/triage/network_adapters/httparty_adapter.rb, line 82
def next_page_url(url, response)
  return unless response.headers['x-next-page'].present?

  next_page = "&page=#{response.headers['x-next-page']}"

  if url.include?('&page')
    url.gsub(/&page=\d+/, next_page)
  else
    url + next_page
  end
end
raise_on_internal_server_error!(response) click to toggle source
# File lib/gitlab/triage/network_adapters/httparty_adapter.rb, line 66
def raise_on_internal_server_error!(response)
  return unless response.response.is_a?(Net::HTTPInternalServerError)

  puts Gitlab::Triage::UI.debug response.inspect if options.debug

  raise Errors::Network::InternalServerError, 'Internal server error encountered!'
end
raise_on_too_many_requests!(response) click to toggle source
# File lib/gitlab/triage/network_adapters/httparty_adapter.rb, line 74
def raise_on_too_many_requests!(response)
  return unless response.response.is_a?(Net::HTTPTooManyRequests)

  puts Gitlab::Triage::UI.debug response.inspect if options.debug

  raise Errors::Network::TooManyRequests, 'Too many requests made!'
end
raise_on_unauthorized_error!(response) click to toggle source
# File lib/gitlab/triage/network_adapters/httparty_adapter.rb, line 58
def raise_on_unauthorized_error!(response)
  return unless response.response.is_a?(Net::HTTPUnauthorized)

  puts Gitlab::Triage::UI.debug response.inspect if options.debug

  raise 'The provided token is unauthorized!'
end