class Multiwoven::Integrations::Destination::MicrosoftDynamics::Client

def check_connection(connection_config)

def check_connection(connection_config)
  connection_config = connection_config.with_indifferent_access
  initialize_client(connection_config)
  token_response = create_access_token
  uri = URI.parse(format(MS_DYNAMICS_WHOAMI_API, instance_url: @instance_url, api_version: API_VERSION))
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == "https")
  request = Net::HTTP::Get.new(uri)
  auth_headers(token_response["access_token"]).each { |key, value| request[key] = value }
  response = http.request(request)
  response_body = JSON.parse(response.body)
  if success?(response) && response_body.key?("UserId")
    success_status
  else
    failure_status(nil)
  end
rescue StandardError => e
  handle_exception(e, {
                     context: "MICROSOFT:DYNAMICS:CHECK_CONNECTION:EXCEPTION",
                     type: "error"
                   })
  failure_status(e)
end