optimizely-sdk 3.10.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +202 -202
  3. data/lib/optimizely/audience.rb +127 -97
  4. data/lib/optimizely/bucketer.rb +156 -156
  5. data/lib/optimizely/condition_tree_evaluator.rb +123 -123
  6. data/lib/optimizely/config/datafile_project_config.rb +539 -552
  7. data/lib/optimizely/config/proxy_config.rb +34 -34
  8. data/lib/optimizely/config_manager/async_scheduler.rb +95 -95
  9. data/lib/optimizely/config_manager/http_project_config_manager.rb +330 -329
  10. data/lib/optimizely/config_manager/project_config_manager.rb +24 -24
  11. data/lib/optimizely/config_manager/static_project_config_manager.rb +53 -52
  12. data/lib/optimizely/decide/optimizely_decide_option.rb +28 -28
  13. data/lib/optimizely/decide/optimizely_decision.rb +60 -60
  14. data/lib/optimizely/decide/optimizely_decision_message.rb +26 -26
  15. data/lib/optimizely/decision_service.rb +563 -563
  16. data/lib/optimizely/error_handler.rb +39 -39
  17. data/lib/optimizely/event/batch_event_processor.rb +235 -234
  18. data/lib/optimizely/event/entity/conversion_event.rb +44 -43
  19. data/lib/optimizely/event/entity/decision.rb +38 -38
  20. data/lib/optimizely/event/entity/event_batch.rb +86 -86
  21. data/lib/optimizely/event/entity/event_context.rb +50 -50
  22. data/lib/optimizely/event/entity/impression_event.rb +48 -47
  23. data/lib/optimizely/event/entity/snapshot.rb +33 -33
  24. data/lib/optimizely/event/entity/snapshot_event.rb +48 -48
  25. data/lib/optimizely/event/entity/user_event.rb +22 -22
  26. data/lib/optimizely/event/entity/visitor.rb +36 -35
  27. data/lib/optimizely/event/entity/visitor_attribute.rb +38 -37
  28. data/lib/optimizely/event/event_factory.rb +156 -155
  29. data/lib/optimizely/event/event_processor.rb +25 -25
  30. data/lib/optimizely/event/forwarding_event_processor.rb +44 -43
  31. data/lib/optimizely/event/user_event_factory.rb +88 -88
  32. data/lib/optimizely/event_builder.rb +221 -228
  33. data/lib/optimizely/event_dispatcher.rb +71 -71
  34. data/lib/optimizely/exceptions.rb +135 -139
  35. data/lib/optimizely/helpers/constants.rb +415 -397
  36. data/lib/optimizely/helpers/date_time_utils.rb +30 -30
  37. data/lib/optimizely/helpers/event_tag_utils.rb +132 -132
  38. data/lib/optimizely/helpers/group.rb +31 -31
  39. data/lib/optimizely/helpers/http_utils.rb +65 -64
  40. data/lib/optimizely/helpers/validator.rb +183 -183
  41. data/lib/optimizely/helpers/variable_type.rb +67 -67
  42. data/lib/optimizely/logger.rb +46 -45
  43. data/lib/optimizely/notification_center.rb +174 -176
  44. data/lib/optimizely/optimizely_config.rb +271 -272
  45. data/lib/optimizely/optimizely_factory.rb +181 -181
  46. data/lib/optimizely/optimizely_user_context.rb +204 -179
  47. data/lib/optimizely/params.rb +31 -31
  48. data/lib/optimizely/project_config.rb +99 -91
  49. data/lib/optimizely/semantic_version.rb +166 -166
  50. data/lib/optimizely/{custom_attribute_condition_evaluator.rb → user_condition_evaluator.rb} +391 -369
  51. data/lib/optimizely/user_profile_service.rb +35 -35
  52. data/lib/optimizely/version.rb +21 -21
  53. data/lib/optimizely.rb +1130 -1145
  54. metadata +13 -13
@@ -1,38 +1,38 @@
1
- # frozen_string_literal: true
2
-
3
- #
4
- # Copyright 2019-2020, 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, :metadata
21
-
22
- def initialize(campaign_id:, experiment_id:, variation_id:, metadata:)
23
- @campaign_id = campaign_id
24
- @experiment_id = experiment_id
25
- @variation_id = variation_id
26
- @metadata = metadata
27
- end
28
-
29
- def as_json
30
- {
31
- campaign_id: @campaign_id,
32
- experiment_id: @experiment_id,
33
- variation_id: @variation_id,
34
- metadata: @metadata
35
- }
36
- end
37
- end
38
- end
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019-2020, 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, :metadata
21
+
22
+ def initialize(campaign_id:, experiment_id:, variation_id:, metadata:)
23
+ @campaign_id = campaign_id
24
+ @experiment_id = experiment_id
25
+ @variation_id = variation_id
26
+ @metadata = metadata
27
+ end
28
+
29
+ def as_json
30
+ {
31
+ campaign_id: @campaign_id,
32
+ experiment_id: @experiment_id,
33
+ variation_id: @variation_id,
34
+ metadata: @metadata
35
+ }
36
+ end
37
+ end
38
+ end
@@ -1,86 +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
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
@@ -1,50 +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
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
@@ -1,47 +1,48 @@
1
- # frozen_string_literal: true
2
-
3
- #
4
- # Copyright 2019-2020, 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, :metadata,
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
- metadata:,
32
- visitor_attributes:,
33
- bot_filtering:
34
- )
35
- @event_context = event_context
36
- @uuid = SecureRandom.uuid
37
- @timestamp = Helpers::DateTimeUtils.create_timestamp
38
- @user_id = user_id
39
- @experiment_layer_id = experiment_layer_id
40
- @experiment_id = experiment_id
41
- @variation_id = variation_id
42
- @metadata = metadata
43
- @visitor_attributes = visitor_attributes
44
- @bot_filtering = bot_filtering
45
- end
46
- end
47
- end
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Copyright 2019-2020, 2022, 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, :metadata,
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
+ metadata:,
32
+ visitor_attributes:,
33
+ bot_filtering:
34
+ )
35
+ super()
36
+ @event_context = event_context
37
+ @uuid = SecureRandom.uuid
38
+ @timestamp = Helpers::DateTimeUtils.create_timestamp
39
+ @user_id = user_id
40
+ @experiment_layer_id = experiment_layer_id
41
+ @experiment_id = experiment_id
42
+ @variation_id = variation_id
43
+ @metadata = metadata
44
+ @visitor_attributes = visitor_attributes
45
+ @bot_filtering = bot_filtering
46
+ end
47
+ end
48
+ end
@@ -1,33 +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
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
@@ -1,48 +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
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
@@ -1,22 +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
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