class Aws::Plugins::ClientMetricsPlugin

def self.resolve_client_id(cfg)

def self.resolve_client_id(cfg)
  default = ""
  env_source = ENV["AWS_CSM_CLIENT_ID"]
  env_source = nil if env_source == ""
  cfg_source = Aws.shared_config.csm_client_id(profile: cfg.profile)
  env_source || cfg_source || default
end

def self.resolve_client_side_monitoring(cfg)

def self.resolve_client_side_monitoring(cfg)
  env_source = ENV["AWS_CSM_ENABLED"]
  env_source = nil if env_source == ""
  if env_source.is_a?(String) && (env_source.downcase == "false" || env_source.downcase == "f")
    env_source = false
  end
  cfg_source = Aws.shared_config.csm_enabled(profile: cfg.profile)
  if env_source || cfg_source
    true
  else
    false
  end
end

def self.resolve_client_side_monitoring_host(cfg)

def self.resolve_client_side_monitoring_host(cfg)
  env_source = ENV["AWS_CSM_HOST"]
  env_source = nil if env_source == ""
  cfg_source = Aws.shared_config.csm_host(profile: cfg.profile)
  if env_source
    env_source
  elsif cfg_source
    cfg_source
  else
    "127.0.0.1"
  end
end

def self.resolve_client_side_monitoring_port(cfg)

def self.resolve_client_side_monitoring_port(cfg)
  env_source = ENV["AWS_CSM_PORT"]
  env_source = nil if env_source == ""
  cfg_source = Aws.shared_config.csm_port(profile: cfg.profile)
  if env_source
    env_source.to_i
  elsif cfg_source
    cfg_source.to_i
  else
    31000
  end
end

def self.resolve_publisher(cfg)

def self.resolve_publisher(cfg)
  ClientSideMonitoring::Publisher.new
end

def add_handlers(handlers, config)

def add_handlers(handlers, config)
  if config.client_side_monitoring && config.client_side_monitoring_port
    handlers.add(Handler, step: :initialize)
    publisher = config.client_side_monitoring_publisher
    publisher.agent_port = config.client_side_monitoring_port
    publisher.agent_host = config.client_side_monitoring_host
  end
end