optimizely-sdk 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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