class Unleash::Context

Constants

ATTRS

Public Class Methods

new(params = {}) click to toggle source
# File lib/unleash/context.rb, line 7
def initialize(params = {})
  raise ArgumentError, "Unleash::Context must be initialized with a hash." unless params.is_a?(Hash)

  self.app_name    = value_for('appName', params, Unleash&.configuration&.app_name)
  self.environment = value_for('environment', params, Unleash&.configuration&.environment || 'default')
  self.user_id     = value_for('userId', params)
  self.session_id  = value_for('sessionId', params)
  self.remote_address = value_for('remoteAddress', params)

  properties = value_for('properties', params)
  self.properties = properties.is_a?(Hash) ? properties.transform_keys(&:to_sym) : {}
end

Public Instance Methods

get_by_name(name) click to toggle source
# File lib/unleash/context.rb, line 25
def get_by_name(name)
  normalized_name = underscore(name).to_sym

  if ATTRS.include? normalized_name
    self.send(normalized_name)
  else
    self.properties.fetch(normalized_name)
  end
end
to_s() click to toggle source
# File lib/unleash/context.rb, line 20
def to_s
  "<Context: user_id=#{@user_id},session_id=#{@session_id},remote_address=#{@remote_address},properties=#{@properties}" \
    ",app_name=#{@app_name},environment=#{@environment}>"
end

Private Instance Methods

underscore(camel_cased_word) click to toggle source

converts CamelCase to snake_case

# File lib/unleash/context.rb, line 43
def underscore(camel_cased_word)
  camel_cased_word.to_s.gsub(/(.)([A-Z])/, '\1_\2').downcase
end
value_for(key, params, default_value = nil) click to toggle source

Method to fetch values from hash for two types of keys: string in camelCase and symbol in snake_case

# File lib/unleash/context.rb, line 38
def value_for(key, params, default_value = nil)
  params.values_at(key, key.to_sym, underscore(key), underscore(key).to_sym).compact.first || default_value
end