Method: Featureflow::Client#evaluate

Defined in:
lib/featureflow/client.rb

#evaluate(key, user) ⇒ Object

Raises:

  • (ArgumentError)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/featureflow/client.rb', line 53

def evaluate(key, user)
  raise ArgumentError, 'key must be a string' unless key.is_a?(String)
  raise ArgumentError, 'user is required' unless user
  unless user.is_a?(String) || user.is_a?(Hash)
    raise ArgumentError, 'user must be either a string user id,' + \
                         ' or a Hash built using Featureflow::UserBuilder)'
  end

  user = UserBuilder.new(user).build if user.is_a?(String)

  user = user.dup
  user[:attributes] = user[:attributes].merge('featureflow.user.id' => user[:id])

  Evaluate.new(
    feature_key: key,
    feature: feature(key),
    failover_variant: failover_variant(key),
    user: user,
    salt: '1',
    events_client: @events_client
  )
end