Class: Stripe::StripeClient::SystemProfiler

Inherits:
Object
  • Object
show all
Defined in:
lib/stripe/stripe_client.rb

Overview

SystemProfiler extracts information about the system that we’re running in so that we can generate a rich user agent header to help debug integrations.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSystemProfiler

Returns a new instance of SystemProfiler.



1051
1052
1053
# File 'lib/stripe/stripe_client.rb', line 1051

def initialize
  @uname = self.class.uname
end

Class Method Details

.unameObject



1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
# File 'lib/stripe/stripe_client.rb', line 1020

def self.uname
  if ::File.exist?("/proc/version")
    ::File.read("/proc/version").strip
  else
    case RbConfig::CONFIG["host_os"]
    when /linux|darwin|bsd|sunos|solaris|cygwin/i
      uname_from_system
    when /mswin|mingw/i
      uname_from_system_ver
    else
      "unknown platform"
    end
  end
end

.uname_from_systemObject



1035
1036
1037
1038
1039
1040
1041
# File 'lib/stripe/stripe_client.rb', line 1035

def self.uname_from_system
  (`uname -a 2>/dev/null` || "").strip
rescue Errno::ENOENT
  "uname executable not found"
rescue Errno::ENOMEM # couldn't create subprocess
  "uname lookup failed"
end

.uname_from_system_verObject



1043
1044
1045
1046
1047
1048
1049
# File 'lib/stripe/stripe_client.rb', line 1043

def self.uname_from_system_ver
  (`ver` || "").strip
rescue Errno::ENOENT
  "ver executable not found"
rescue Errno::ENOMEM # couldn't create subprocess
  "uname lookup failed"
end

Instance Method Details

#user_agentObject



1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
# File 'lib/stripe/stripe_client.rb', line 1055

def user_agent
  lang_version = "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} " \
                 "(#{RUBY_RELEASE_DATE})"

  {
    application: Stripe.app_info,
    bindings_version: Stripe::VERSION,
    lang: "ruby",
    lang_version: lang_version,
    platform: RUBY_PLATFORM,
    engine: defined?(RUBY_ENGINE) ? RUBY_ENGINE : "",
    publisher: "stripe",
    uname: @uname,
    hostname: Socket.gethostname,
  }.delete_if { |_k, v| v.nil? }
end