Skip to content

Commit 0072115

Browse files
refact: Changes needed for agent (#305)
1 parent 227607c commit 0072115

File tree

5 files changed

+163
-197
lines changed

5 files changed

+163
-197
lines changed

pkg/client/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ func (o *OptimizelyClient) decideForKeys(userContext OptimizelyUserContext, keys
167167
enabledFlagsOnly := o.getAllOptions(options).EnabledFlagsOnly
168168
for _, key := range keys {
169169
optimizelyDecision := o.decide(userContext, key, options)
170-
if !enabledFlagsOnly || optimizelyDecision.GetEnabled() {
170+
if !enabledFlagsOnly || optimizelyDecision.Enabled {
171171
decisionMap[key] = optimizelyDecision
172172
}
173173
}

pkg/client/optimizely_decision.go

Lines changed: 18 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -23,69 +23,34 @@ import (
2323

2424
// OptimizelyDecision defines the decision returned by decide api.
2525
type OptimizelyDecision struct {
26-
variationKey string
27-
enabled bool
28-
variables *optimizelyjson.OptimizelyJSON
29-
ruleKey string
30-
flagKey string
31-
userContext OptimizelyUserContext
32-
reasons []string
26+
VariationKey string `json:"variationKey"`
27+
Enabled bool `json:"enabled"`
28+
Variables *optimizelyjson.OptimizelyJSON `json:"-"`
29+
RuleKey string `json:"ruleKey"`
30+
FlagKey string `json:"flagKey"`
31+
UserContext OptimizelyUserContext `json:"userContext"`
32+
Reasons []string `json:"reasons"`
3333
}
3434

3535
// NewOptimizelyDecision creates and returns a new instance of OptimizelyDecision
3636
func NewOptimizelyDecision(variationKey, ruleKey, flagKey string, enabled bool, variables *optimizelyjson.OptimizelyJSON, userContext OptimizelyUserContext, reasons []string) OptimizelyDecision {
3737
return OptimizelyDecision{
38-
variationKey: variationKey,
39-
enabled: enabled,
40-
variables: variables,
41-
ruleKey: ruleKey,
42-
flagKey: flagKey,
43-
userContext: userContext,
44-
reasons: reasons,
38+
VariationKey: variationKey,
39+
Enabled: enabled,
40+
Variables: variables,
41+
RuleKey: ruleKey,
42+
FlagKey: flagKey,
43+
UserContext: userContext,
44+
Reasons: reasons,
4545
}
4646
}
4747

4848
// NewErrorDecision returns a decision with error
4949
func NewErrorDecision(key string, user OptimizelyUserContext, err error) OptimizelyDecision {
5050
return OptimizelyDecision{
51-
flagKey: key,
52-
userContext: user,
53-
variables: &optimizelyjson.OptimizelyJSON{},
54-
reasons: []string{err.Error()},
51+
FlagKey: key,
52+
UserContext: user,
53+
Variables: &optimizelyjson.OptimizelyJSON{},
54+
Reasons: []string{err.Error()},
5555
}
5656
}
57-
58-
// GetVariationKey returns variation key for optimizely decision.
59-
func (o OptimizelyDecision) GetVariationKey() string {
60-
return o.variationKey
61-
}
62-
63-
// GetEnabled returns the boolean value indicating if the flag is enabled or not.
64-
func (o OptimizelyDecision) GetEnabled() bool {
65-
return o.enabled
66-
}
67-
68-
// GetVariables returns the collection of variables associated with the decision.
69-
func (o OptimizelyDecision) GetVariables() *optimizelyjson.OptimizelyJSON {
70-
return o.variables
71-
}
72-
73-
// GetRuleKey returns the rule key of the decision.
74-
func (o OptimizelyDecision) GetRuleKey() string {
75-
return o.ruleKey
76-
}
77-
78-
// GetFlagKey returns the flag key for which the decision was made.
79-
func (o OptimizelyDecision) GetFlagKey() string {
80-
return o.flagKey
81-
}
82-
83-
// GetUserContext returns the user context for which the decision was made.
84-
func (o OptimizelyDecision) GetUserContext() OptimizelyUserContext {
85-
return o.userContext
86-
}
87-
88-
// GetReasons returns an array of error/info/debug messages describing why the decision has been made.
89-
func (o OptimizelyDecision) GetReasons() []string {
90-
return o.reasons
91-
}

pkg/client/optimizely_decision_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ func (s *OptimizelyDecisionTestSuite) TestOptimizelyDecision() {
4848
optimizelyUserContext := s.OptimizelyClient.CreateUserContext(userID, attributes)
4949
decision := NewOptimizelyDecision(variationKey, ruleKey, flagKey, enabled, variables, optimizelyUserContext, reasons)
5050

51-
s.Equal(variationKey, decision.GetVariationKey())
52-
s.Equal(enabled, decision.GetEnabled())
53-
s.Equal(variables, decision.GetVariables())
54-
s.Equal(ruleKey, decision.GetRuleKey())
55-
s.Equal(flagKey, decision.GetFlagKey())
56-
s.Equal(reasons, decision.GetReasons())
57-
s.Equal(optimizelyUserContext, decision.GetUserContext())
51+
s.Equal(variationKey, decision.VariationKey)
52+
s.Equal(enabled, decision.Enabled)
53+
s.Equal(variables, decision.Variables)
54+
s.Equal(ruleKey, decision.RuleKey)
55+
s.Equal(flagKey, decision.FlagKey)
56+
s.Equal(reasons, decision.Reasons)
57+
s.Equal(optimizelyUserContext, decision.UserContext)
5858
}
5959

6060
func (s *OptimizelyDecisionTestSuite) TestNewErrorDecision() {
@@ -65,14 +65,14 @@ func (s *OptimizelyDecisionTestSuite) TestNewErrorDecision() {
6565
optimizelyUserContext := s.OptimizelyClient.CreateUserContext(userID, attributes)
6666
decision := NewErrorDecision(flagKey, optimizelyUserContext, errors.New(errorString))
6767

68-
s.Equal("", decision.GetVariationKey())
69-
s.Equal(false, decision.GetEnabled())
70-
s.Equal(&optimizelyjson.OptimizelyJSON{}, decision.GetVariables())
71-
s.Equal("", decision.GetRuleKey())
72-
s.Equal(flagKey, decision.GetFlagKey())
73-
s.Equal(1, len(decision.GetReasons()))
74-
s.Equal(optimizelyUserContext, decision.GetUserContext())
75-
s.Equal(errorString, decision.GetReasons()[0])
68+
s.Equal("", decision.VariationKey)
69+
s.Equal(false, decision.Enabled)
70+
s.Equal(&optimizelyjson.OptimizelyJSON{}, decision.Variables)
71+
s.Equal("", decision.RuleKey)
72+
s.Equal(flagKey, decision.FlagKey)
73+
s.Equal(1, len(decision.Reasons))
74+
s.Equal(optimizelyUserContext, decision.UserContext)
75+
s.Equal(errorString, decision.Reasons[0])
7676
}
7777

7878
func TestOptimizelyDecisionTestSuite(t *testing.T) {

pkg/client/optimizely_user_context.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ import (
2626

2727
// OptimizelyUserContext defines user contexts that the SDK will use to make decisions for.
2828
type OptimizelyUserContext struct {
29-
userID string
30-
attributes map[string]interface{}
29+
UserID string
30+
Attributes map[string]interface{}
31+
3132
optimizely *OptimizelyClient
3233
mutex *sync.RWMutex
3334
}
@@ -41,8 +42,8 @@ func newOptimizelyUserContext(optimizely *OptimizelyClient, userID string, attri
4142
attributesCopy := copyUserAttributes(attributes)
4243

4344
return OptimizelyUserContext{
44-
userID: userID,
45-
attributes: attributesCopy,
45+
UserID: userID,
46+
Attributes: attributesCopy,
4647
optimizely: optimizely,
4748
mutex: new(sync.RWMutex),
4849
}
@@ -55,24 +56,24 @@ func (o OptimizelyUserContext) GetOptimizely() *OptimizelyClient {
5556

5657
// GetUserID returns userID for Optimizely user context
5758
func (o OptimizelyUserContext) GetUserID() string {
58-
return o.userID
59+
return o.UserID
5960
}
6061

6162
// GetUserAttributes returns user attributes for Optimizely user context
6263
func (o OptimizelyUserContext) GetUserAttributes() map[string]interface{} {
6364
o.mutex.RLock()
6465
defer o.mutex.RUnlock()
65-
return copyUserAttributes(o.attributes)
66+
return copyUserAttributes(o.Attributes)
6667
}
6768

6869
// SetAttribute sets an attribute for a given key.
6970
func (o *OptimizelyUserContext) SetAttribute(key string, value interface{}) {
7071
o.mutex.Lock()
7172
defer o.mutex.Unlock()
72-
if o.attributes == nil {
73-
o.attributes = make(map[string]interface{})
73+
if o.Attributes == nil {
74+
o.Attributes = make(map[string]interface{})
7475
}
75-
o.attributes[key] = value
76+
o.Attributes[key] = value
7677
}
7778

7879
// Decide returns a decision result for a given flag key and a user context, which contains

0 commit comments

Comments
 (0)