module Sourcescrub::Utils::Request

Key Reminder

Public Instance Methods

authenticate() click to toggle source

Body:

grant_type=password&username={username}&password={password}&scope=client_api
# File lib/sourcescrub/utils/request.rb, line 84
def authenticate
  body = "grant_type=password&username=#{Sourcescrub.account.username}&password=#{Sourcescrub.account.password}&scope=client_api"

  response = Faraday.new(
    url: TOKEN_URL,
    headers: {
      'Content-Type' => 'application/x-www-form-urlencoded',
      'Authorization' => Sourcescrub.account.basic
    }
  ).post(TOKEN_URI, body)

  raise 'Sourcescrub error: Service Unavailable' unless response.status == 200

  @token = JSON.parse(response.body)['access_token']
end
get(uri, *args) click to toggle source

Limit of requests per second: 30

# File lib/sourcescrub/utils/request.rb, line 22
def get(uri, *args)
  response = Faraday.new(request_options(args)) do |faraday|
    faraday.headers['Content-Type'] = 'application/json-patch+json'
    faraday.adapter Faraday.default_adapter
    faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
  end.get(uri)

  raise Error, response.body unless response.status == 200

  parse_api_response(response.body).merge('headers' => response.headers)
end

Private Instance Methods

debug_mode?() click to toggle source
# File lib/sourcescrub/utils/request.rb, line 127
def debug_mode?
  Sourcescrub.account.debug || false
end
parse_api_response(response_body) click to toggle source
# File lib/sourcescrub/utils/request.rb, line 114
def parse_api_response(response_body)
  response_body = JSON.parse(response_body)

  # Processing different cases for investments
  return response_body unless response_body.is_a?(Array)
  return {} if response_body.empty?

  {
    'total' => response_body.size,
    'items' => response_body
  }
end
request_options(args) click to toggle source
# File lib/sourcescrub/utils/request.rb, line 102
def request_options(args)
  {
    url: API_URI,
    headers: headers,
    request: {
      timeout: 10,
      open_timeout: 5
    },
    params: args[0] || {}
  }
end