class ThisFeature::Adapters::SplitIo

Constants

UNDEFINED_KEY

used as treatment key when none is given, it's required by split

Attributes

client[R]
context_key_method[R]

Public Class Methods

new(client: nil, context_key_method: nil) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 9
def initialize(client: nil, context_key_method: nil)
  @client = client || default_split_client
  @context_key_method = context_key_method

  @client.block_until_ready
end

Public Instance Methods

control?(flag_name, context: UNDEFINED_KEY, data: {}) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 20
def control?(flag_name, context: UNDEFINED_KEY, data: {})
  treatment(flag_name, context: context, data: data).include?('control')
end
off?(flag_name, context: UNDEFINED_KEY, data: {}) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 28
def off?(flag_name, context: UNDEFINED_KEY, data: {})
  treatment(flag_name, context: context, data: data).eql?('off')
end
on?(flag_name, context: UNDEFINED_KEY, data: {}) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 24
def on?(flag_name, context: UNDEFINED_KEY, data: {})
  treatment(flag_name, context: context, data: data).eql?('on')
end
present?(flag_name) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 16
def present?(flag_name)
  !control?(flag_name)
end

Private Instance Methods

context_key(context) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 40
def context_key(context)
  return UNDEFINED_KEY if context.nil? || context.eql?(UNDEFINED_KEY)
  return context.send(context_key_method) unless context_key_method.nil?
  return context.to_s if context.respond_to?(:to_s)

  context
end
default_split_client() click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 48
def default_split_client
  SplitIoClient::SplitFactory.new(ENV.fetch('SPLIT_IO_AUTH_KEY')).client
end
treatment(flag_name, context: UNDEFINED_KEY, data: {}) click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 36
def treatment(flag_name, context: UNDEFINED_KEY, data: {})
  client.get_treatment(context_key(context), flag_name, data)
end