module Gapic::LoggingConcerns

def normalize_service input

Other tags:
    Private: -
def normalize_service input
  case input
  when String
    input
  when Class
    mod = input.name.split("::")[..-2].inject(Object) { |m, n| m.const_get n }
    if mod.const_defined? "Service"
      mod.const_get("Service").service_name
    else
      name_segments = input.name.split("::")[..-3]
      mod = name_segments.inject(Object) { |m, n| m.const_get n }
      name_segments.join "." if mod.const_defined? "Rest"
    end
  end
end

def normalize_system_name input

Other tags:
    Private: -
def normalize_system_name input
  case input
  when String
    input
  when Class
    input.name.split("::")[..-3]
         .map { |elem| elem.scan(/[A-Z][A-Z]*(?=[A-Z][a-z0-9]|$)|[A-Z][a-z0-9]+/).map(&:downcase).join("_") }
         .join("-")
  else
    "googleapis"
  end
end

def random_uuid4

Other tags:
    Private: -
def random_uuid4
  ary = Random.bytes 16
  ary.setbyte 6, ((ary.getbyte(6) & 0x0f) | 0x40)
  ary.setbyte 8, ((ary.getbyte(8) & 0x3f) | 0x80)
  ary.unpack("H8H4H4H4H12").join "-"
end

def setup_logging logger: :default,

Other tags:
    Private: -
def setup_logging logger: :default,
                  stream: nil,
                  formatter: nil,
                  level: nil,
                  system_name: nil,
                  service: nil,
                  endpoint: nil,
                  client_id: nil
  service = LoggingConcerns.normalize_service service
  system_name = LoggingConcerns.normalize_system_name system_name
  logging_env = ENV["GOOGLE_SDK_RUBY_LOGGING_GEMS"].to_s.downcase
  logger = nil if ["false", "none"].include? logging_env
  if logger == :default
    logger = nil
    if ["true", "all"].include?(logging_env) || logging_env.split(",").include?(system_name)
      stream ||= $stderr
      level ||= "DEBUG"
      formatter ||= Google::Logging::StructuredFormatter.new if Google::Cloud::Env.get.logging_agent_expected?
      logger = Logger.new stream, progname: system_name, level: level, formatter: formatter
    end
  end
  @logger = logger
  @stub_logger = StubLogger.new logger: logger,
                                system_name: system_name,
                                service: service,
                                endpoint: endpoint,
                                client_id: client_id
end