class Aws::Plugins::UserAgent::Handler::UserAgent
def api_metadata
def api_metadata service_id = @context.config.api.metadata['serviceId'] return unless service_id service_id = service_id.gsub(' ', '_').downcase gem_version = @context[:gem_version] "api/#{service_id}##{gem_version}" end
def app_id
def app_id return unless (app_id = @context.config.sdk_ua_app_id) # Sanitize and only allow these characters app_id = app_id.gsub(/[^!#$%&'*+\-.^_`|~0-9A-Za-z]/, '-') "app/#{app_id}" end
def config_metadata
def config_metadata "cfg/retry-mode##{@context.config.retry_mode}" end
def env_metadata
def env_metadata return unless (execution_env = ENV['AWS_EXECUTION_ENV']) "exec-env/#{execution_env}" end
def feature_metadata
def feature_metadata return unless Thread.current[:aws_sdk_core_user_agent_feature] Thread.current[:aws_sdk_core_user_agent_feature].join(' ') end
def framework_metadata
def framework_metadata if (frameworks_cfg = @context.config.user_agent_frameworks).empty? return end # Frameworks may be aws-record, aws-sdk-rails, etc. regex = /gems\/(?<name>#{frameworks_cfg.join('|')})-(?<version>\d+\.\d+\.\d+)/.freeze frameworks = {} Kernel.caller.each do |line| match = line.match(regex) next unless match frameworks[match[:name]] = match[:version] end frameworks.map { |n, v| "lib/#{n}##{v}" }.join(' ') end
def initialize(context)
def initialize(context) @context = context end
def language_metadata
def language_metadata "lang/#{RUBY_ENGINE}##{RUBY_ENGINE_VERSION} md/#{RUBY_VERSION}" end
def os_metadata
def os_metadata os = case RbConfig::CONFIG['host_os'] when /mac|darwin/ 'macos' when /linux|cygwin/ 'linux' when /mingw|mswin/ 'windows' else 'other' end metadata = "os/#{os}" local_version = Gem::Platform.local.version metadata += "##{local_version}" if local_version metadata += " md/#{RbConfig::CONFIG['host_cpu']}" metadata end
def to_s
def to_s ua = "aws-sdk-ruby3/#{CORE_GEM_VERSION}" ua += ' ua/2.0' ua += " #{api_metadata}" if api_metadata ua += " #{os_metadata}" ua += " #{language_metadata}" ua += " #{env_metadata}" if env_metadata ua += " #{config_metadata}" if config_metadata ua += " #{app_id}" if app_id ua += " #{feature_metadata}" if feature_metadata ua += " #{framework_metadata}" if framework_metadata if @context.config.user_agent_suffix ua += " #{@context.config.user_agent_suffix}" end ua.strip end