Skip to content

Commit 135833a

Browse files
committed
Merge pull request #14 from optimizely/return_impression_event
Continues simplification pattern
2 parents 8b6d54b + 008d258 commit 135833a

File tree

2 files changed

+24
-69
lines changed

2 files changed

+24
-69
lines changed

optimizely/event.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,27 @@ type Event struct {
3434
// Add experiment to variation mapping to the impression event
3535
// experiment_key: Experiment which is being activated
3636
// variation_id: id for variation which would be presented to the user
37-
func (event *Event) add_experiment(experiment_key string, variation_id string) {
38-
37+
func (event *Event) add_experiment(project_config ProjectConfig, experiment_key string, variation_id string) {
38+
experiment_id := ""
39+
for i := 0; i < len(project_config.Experiments); i++ {
40+
if project_config.Experiments[i].Key == experiment_key {
41+
experiment_id = project_config.Experiments[i].Id
42+
}
43+
}
44+
event.params.Add(fmt.Sprintf("{%v}{%v}", EXPERIMENT, experiment_id), variation_id)
3945
}
4046

4147
// Add imp[ression goal information to the event
4248
// experiment_key: Experiment which is being activated
43-
func (event *Event) add_impression_goal(experiment_key string) {
44-
49+
func (event *Event) add_impression_goal(project_config ProjectConfig, experiment_key string) {
50+
experiment_id := ""
51+
for i := 0; i < len(project_config.Experiments); i++ {
52+
if project_config.Experiments[i].Key == experiment_key {
53+
experiment_id = project_config.Experiments[i].Id
54+
}
55+
}
56+
event.params.Add(GOAL_ID, experiment_id)
57+
event.params.Add(GOAL_NAME, "visitor-event")
4558
}
4659

4760
// Get segment Id for the provided attribute key
@@ -85,7 +98,10 @@ func (event *Event) add_common_params(client *OptimizelyClient, user_id string,
8598
// user_id: ID for user.
8699
// attributes: Dict representing user attributes and values which need to be recorded.
87100
// Returns: Event object encapsulating the impression event.
88-
func CreateImpressionEvent(client *OptimizelyClient, experiment_key string, variation_id string, user_id string, attributes []AttributeEntity) {
101+
func CreateImpressionEvent(client *OptimizelyClient, experiment_key string, variation_id string, user_id string, attributes []AttributeEntity) *Event {
89102
event := &Event{}
90103
event.add_common_params(client, user_id, attributes)
104+
event.add_impression_goal(client.project_config, experiment_key)
105+
event.add_experiment(client.project_config, experiment_key, variation_id)
106+
return event
91107
}

optimizely/optimizely.go

Lines changed: 3 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package optimizely
22

3-
import (
4-
"fmt"
5-
"net/url"
6-
)
7-
83
// GetOptimizelyClient returns a client that can be used to interface
94
// with Optimizely
105
func GetOptimizelyClient(account_id string) (*OptimizelyClient, error) {
@@ -31,46 +26,6 @@ func (client *OptimizelyClient) Track(
3126
attributes []AttributeEntity,
3227
event_value string) {
3328

34-
// Create and distpatch conversion event
35-
36-
var Url *url.URL
37-
Url, err := url.Parse("")
38-
if err != nil {
39-
panic("boom")
40-
}
41-
42-
end_user_id := fmt.Sprintf(END_USER_ID_TEMPLATE, user_id)
43-
goal_id := GetGoalIdFromProjectConfig(event_key, client.project_config)
44-
45-
// build string to make GET request with
46-
parameters := url.Values{}
47-
parameters.Add(ACCOUNT_ID, client.account_id)
48-
parameters.Add(PROJECT_ID, client.project_config.ProjectId)
49-
parameters.Add(GOAL_NAME, event_key)
50-
parameters.Add(GOAL_ID, goal_id)
51-
parameters.Add(END_USER_ID, end_user_id)
52-
53-
// Set experiment and corresponding variation
54-
BuildExperimentVariationParams(
55-
client.project_config, event_key, client.project_config.Experiments, user_id, parameters)
56-
57-
// Set attribute params if any
58-
if len(attributes) > 0 {
59-
BuildAttributeParams(client.project_config, attributes, parameters)
60-
}
61-
62-
// Set event_value if set and also append the revenue goal ID
63-
if len(event_value) != 0 {
64-
parameters.Add(REVENUE, event_value)
65-
//parameters.Add(GOAL_ID, fmt.Sprintf(
66-
//"{%v},{%v}", goal_id, GetRevenueGoalFromProjectConfig())
67-
}
68-
69-
// Dispatch event
70-
Url.RawQuery = parameters.Encode()
71-
tracking_url := Url.String()
72-
fmt.Print(tracking_url)
73-
7429
}
7530

7631
// Activate buckets visitor and sends impression event to Optimizely
@@ -80,12 +35,10 @@ func (client *OptimizelyClient) Track(
8035
// attributes: optional list representing visitor attributes and values
8136
func (client *OptimizelyClient) Activate(experiment_key string, user_id string, attributes []AttributeEntity) {
8237
var valid_experiment = false
83-
var experiment_id = ""
8438
for i := 0; i < len(client.project_config.Experiments); i++ {
8539
if client.project_config.Experiments[i].Key == experiment_key {
8640
if ExperimentIsRunning(client.project_config.Experiments[i]) {
8741
valid_experiment = true
88-
experiment_id = client.project_config.Experiments[i].Id
8942
}
9043
}
9144
}
@@ -94,23 +47,9 @@ func (client *OptimizelyClient) Activate(experiment_key string, user_id string,
9447
return
9548
}
9649

97-
end_user_id := fmt.Sprintf(END_USER_ID_TEMPLATE, user_id)
98-
variation_id := client.Bucket(experiment_key, user_id)
99-
100-
parameters := url.Values{}
101-
parameters.Add(ACCOUNT_ID, client.account_id)
102-
parameters.Add(PROJECT_ID, client.project_config.ProjectId)
103-
parameters.Add(GOAL_NAME, GenerateGoalName(client.project_config.Events))
104-
parameters.Add(fmt.Sprintf("{%v}{%v}", EXPERIMENT, experiment_id), variation_id)
105-
parameters.Add(GOAL_ID, experiment_id)
106-
parameters.Add(END_USER_ID, end_user_id)
107-
108-
// Set attribute params if any
109-
if len(attributes) > 0 {
110-
BuildAttributeParams(client.project_config, attributes, parameters)
111-
}
112-
113-
// TODO dispatch event
50+
variation_id := ""
51+
impression_event := CreateImpressionEvent(
52+
client, experiment_key, variation_id, user_id, attributes)
11453

11554
}
11655

0 commit comments

Comments
 (0)