optimizely-sdk 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ require_relative 'user_event'
19
+ require 'optimizely/helpers/date_time_utils'
20
+ module Optimizely
21
+ class ConversionEvent < UserEvent
22
+ # Represents conversion event
23
+ attr_reader :event, :user_id, :visitor_attributes, :tags, :bot_filtering
24
+
25
+ def initialize(
26
+ event_context:,
27
+ event:,
28
+ user_id:,
29
+ visitor_attributes:,
30
+ tags:,
31
+ bot_filtering:
32
+ )
33
+ @event_context = event_context
34
+ @uuid = SecureRandom.uuid
35
+ @timestamp = Helpers::DateTimeUtils.create_timestamp
36
+ @event = event
37
+ @user_id = user_id
38
+ @visitor_attributes = visitor_attributes
39
+ @tags = tags
40
+ @bot_filtering = bot_filtering
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class Decision
20
+ attr_reader :campaign_id, :experiment_id, :variation_id
21
+
22
+ def initialize(campaign_id:, experiment_id:, variation_id:)
23
+ @campaign_id = campaign_id
24
+ @experiment_id = experiment_id
25
+ @variation_id = variation_id
26
+ end
27
+
28
+ def as_json
29
+ {
30
+ campaign_id: @campaign_id,
31
+ experiment_id: @experiment_id,
32
+ variation_id: @variation_id
33
+ }
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class EventBatch
20
+ attr_accessor :account_id, :project_id, :revision, :client_name, :client_version,
21
+ :anonymize_ip, :enrich_decisions, :visitors
22
+
23
+ def as_json
24
+ {
25
+ account_id: @account_id,
26
+ project_id: @project_id,
27
+ revision: @revision,
28
+ client_name: @client_name,
29
+ client_version: @client_version,
30
+ anonymize_ip: @anonymize_ip,
31
+ enrich_decisions: @enrich_decisions,
32
+ visitors: @visitors
33
+ }
34
+ end
35
+
36
+ class Builder
37
+ attr_reader :account_id, :project_id, :revision, :client_name, :client_version,
38
+ :anonymize_ip, :enrich_decisions, :visitors
39
+
40
+ def build
41
+ event_batch = EventBatch.new
42
+ event_batch.account_id = @account_id
43
+ event_batch.project_id = @project_id
44
+ event_batch.revision = @revision
45
+ event_batch.client_name = @client_name
46
+ event_batch.client_version = @client_version
47
+ event_batch.anonymize_ip = @anonymize_ip
48
+ event_batch.enrich_decisions = @enrich_decisions
49
+ event_batch.visitors = @visitors
50
+ event_batch
51
+ end
52
+
53
+ def with_account_id(account_id)
54
+ @account_id = account_id
55
+ end
56
+
57
+ def with_project_id(project_id)
58
+ @project_id = project_id
59
+ end
60
+
61
+ def with_revision(revision)
62
+ @revision = revision
63
+ end
64
+
65
+ def with_client_name(client_name)
66
+ @client_name = client_name
67
+ end
68
+
69
+ def with_client_version(client_version)
70
+ @client_version = client_version
71
+ end
72
+
73
+ def with_anonymize_ip(anonymize_ip)
74
+ @anonymize_ip = anonymize_ip
75
+ end
76
+
77
+ def with_enrich_decisions(enrich_decisions)
78
+ @enrich_decisions = enrich_decisions
79
+ end
80
+
81
+ def with_visitors(visitors)
82
+ @visitors = visitors
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class EventContext
20
+ attr_reader :account_id, :project_id, :anonymize_ip, :revision, :client_name,
21
+ :client_version
22
+
23
+ def initialize(
24
+ account_id:,
25
+ project_id:,
26
+ anonymize_ip:,
27
+ revision:,
28
+ client_name:,
29
+ client_version:
30
+ )
31
+ @account_id = account_id
32
+ @project_id = project_id
33
+ @anonymize_ip = anonymize_ip
34
+ @revision = revision
35
+ @client_name = client_name
36
+ @client_version = client_version
37
+ end
38
+
39
+ def as_json
40
+ {
41
+ account_id: @account_id,
42
+ project_id: @project_id,
43
+ anonymize_ip: @anonymize_ip,
44
+ revision: @revision,
45
+ client_name: @client_name,
46
+ client_version: @client_version
47
+ }
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ require_relative 'user_event'
19
+ require 'optimizely/helpers/date_time_utils'
20
+ module Optimizely
21
+ class ImpressionEvent < UserEvent
22
+ attr_reader :user_id, :experiment_layer_id, :experiment_id, :variation_id,
23
+ :visitor_attributes, :bot_filtering
24
+
25
+ def initialize(
26
+ event_context:,
27
+ user_id:,
28
+ experiment_layer_id:,
29
+ experiment_id:,
30
+ variation_id:,
31
+ visitor_attributes:,
32
+ bot_filtering:
33
+ )
34
+ @event_context = event_context
35
+ @uuid = SecureRandom.uuid
36
+ @timestamp = Helpers::DateTimeUtils.create_timestamp
37
+ @user_id = user_id
38
+ @experiment_layer_id = experiment_layer_id
39
+ @experiment_id = experiment_id
40
+ @variation_id = variation_id
41
+ @visitor_attributes = visitor_attributes
42
+ @bot_filtering = bot_filtering
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class Snapshot
20
+ attr_reader :events, :decisions
21
+
22
+ def initialize(events:, decisions: nil)
23
+ @decisions = decisions
24
+ @events = events
25
+ end
26
+
27
+ def as_json
28
+ hash = {events: @events}
29
+ hash[:decisions] = @decisions unless @decisions.nil?
30
+ hash
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class SnapshotEvent
20
+ attr_reader :entity_id, :uuid, :key, :timestamp, :revenue, :value, :tags
21
+
22
+ def initialize(
23
+ entity_id:,
24
+ uuid:,
25
+ key:,
26
+ timestamp:,
27
+ revenue: nil,
28
+ value: nil,
29
+ tags: nil
30
+ )
31
+ @entity_id = entity_id
32
+ @uuid = uuid
33
+ @key = key
34
+ @timestamp = timestamp
35
+ @revenue = revenue
36
+ @value = value
37
+ @tags = tags
38
+ end
39
+
40
+ def as_json
41
+ hash = {entity_id: @entity_id, uuid: @uuid, key: @key, timestamp: @timestamp}
42
+ hash[:revenue] = @revenue unless @revenue.nil?
43
+ hash[:value] = @value unless @value.nil?
44
+ hash[:tags] = @tags unless @tags.nil?
45
+ hash
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class UserEvent
20
+ attr_reader :event_context, :uuid, :timestamp
21
+ end
22
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class Visitor
20
+ attr_reader :snapshots, :visitor_id, :attributes
21
+ def initialize(snapshots:, visitor_id:, attributes:)
22
+ @snapshots = snapshots
23
+ @visitor_id = visitor_id
24
+ @attributes = attributes
25
+ end
26
+
27
+ def as_json
28
+ {
29
+ snapshots: @snapshots,
30
+ visitor_id: @visitor_id,
31
+ attributes: @attributes
32
+ }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019, Optimizely and contributors
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Optimizely
19
+ class VisitorAttribute
20
+ attr_reader :entity_id, :key, :type, :value
21
+ def initialize(entity_id:, key:, type:, value:)
22
+ @entity_id = entity_id
23
+ @key = key
24
+ @type = type
25
+ @value = value
26
+ end
27
+
28
+ def as_json
29
+ {
30
+ entity_id: @entity_id,
31
+ key: @key,
32
+ type: @type,
33
+ value: @value
34
+ }
35
+ end
36
+ end
37
+ end