class Envoi::Mam::Agent::ConfigServiceClient

Constants

DEFAULT_API_URL

Public Class Methods

config_get(args = { }) click to toggle source
# File lib/envoi/mam/agent/config_service_client.rb, line 13
def self.config_get(args = { })
  app_id = args[:app_id]
  token = args[:token]
  api_url = args[:api_url] || DEFAULT_API_URL
  request_url = "#{api_url}getuserrecord?token=#{token}&application_id=#{app_id}"
  uri = URI(request_url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  req = Net::HTTP::Get.new(uri.request_uri)
  response = http.request(req)

  code =  response.code
  body_raw = response.body

  unless code == '200'
    puts uri.to_s
    puts uri.request_uri
    puts code
    puts body_raw
    return false
  end

  body_parsed = JSON.parse(body_raw)
  result = body_parsed['result']
  raise "Invalid response from configuration service. No result found. '#{body_raw}'" unless result

  app_data = result.first
  raise "Invalid response from configuration service. No app data found. '#{body_raw}'" unless app_data

  agent_data_raw = app_data['agentdata']
  raise "Invalid response from configuration service. No agentdata found. '#{body_raw}'" unless agent_data_raw

  begin
    agent_data = JSON.parse(agent_data_raw)
  rescue => e
    raise "Error parsing agentdata. #{e.message} '#{body_raw}'"
  end

  agent_data
end