kameleoon-client-ruby 2.0.0 → 2.1.1
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.
- checksums.yaml +4 -4
- data/lib/kameleoon/client.rb +277 -260
- data/lib/kameleoon/configuration/feature_flag.rb +13 -24
- data/lib/kameleoon/configuration/rule.rb +17 -5
- data/lib/kameleoon/configuration/settings.rb +20 -0
- data/lib/kameleoon/cookie.rb +3 -3
- data/lib/kameleoon/data/browser.rb +33 -0
- data/lib/kameleoon/data/conversion.rb +26 -0
- data/lib/kameleoon/data/custom_data.rb +53 -0
- data/lib/kameleoon/data/data.rb +35 -0
- data/lib/kameleoon/data/device.rb +26 -0
- data/lib/kameleoon/data/page_view.rb +31 -0
- data/lib/kameleoon/data/user_agent.rb +14 -0
- data/lib/kameleoon/hybrid/manager.rb +60 -0
- data/lib/kameleoon/network/activity_event.rb +31 -0
- data/lib/kameleoon/network/experiment_event.rb +35 -0
- data/lib/kameleoon/network/uri_helper.rb +36 -0
- data/lib/kameleoon/network/url_provider.rb +71 -0
- data/lib/kameleoon/real_time/real_time_configuration_service.rb +98 -0
- data/lib/kameleoon/real_time/real_time_event.rb +22 -0
- data/lib/kameleoon/real_time/sse_client.rb +111 -0
- data/lib/kameleoon/real_time/sse_message.rb +23 -0
- data/lib/kameleoon/real_time/sse_request.rb +59 -0
- data/lib/kameleoon/request.rb +5 -19
- data/lib/kameleoon/storage/cache.rb +84 -0
- data/lib/kameleoon/storage/cache_factory.rb +23 -0
- data/lib/kameleoon/targeting/condition.rb +41 -12
- data/lib/kameleoon/targeting/condition_factory.rb +35 -12
- data/lib/kameleoon/targeting/conditions/browser_condition.rb +71 -0
- data/lib/kameleoon/targeting/conditions/conversion_condition.rb +21 -0
- data/lib/kameleoon/targeting/conditions/custom_datum.rb +64 -34
- data/lib/kameleoon/targeting/conditions/device_condition.rb +21 -0
- data/lib/kameleoon/targeting/conditions/exclusive_experiment.rb +0 -12
- data/lib/kameleoon/targeting/conditions/page_title_condition.rb +21 -0
- data/lib/kameleoon/targeting/conditions/page_url_condition.rb +21 -0
- data/lib/kameleoon/targeting/conditions/sdk_language_condition.rb +65 -0
- data/lib/kameleoon/targeting/conditions/string_value_condition.rb +40 -0
- data/lib/kameleoon/targeting/conditions/target_experiment.rb +5 -9
- data/lib/kameleoon/targeting/conditions/unknown_condition.rb +15 -0
- data/lib/kameleoon/targeting/conditions/visitor_code_condition.rb +16 -0
- data/lib/kameleoon/targeting/models.rb +0 -24
- data/lib/kameleoon/utils.rb +1 -1
- data/lib/kameleoon/version.rb +28 -1
- metadata +45 -4
- data/lib/kameleoon/configuration/feature_flag_v2.rb +0 -30
- data/lib/kameleoon/data.rb +0 -169
data/lib/kameleoon/data.rb
DELETED
@@ -1,169 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Kameleoon
|
4
|
-
NONCE_LENGTH = 16
|
5
|
-
|
6
|
-
module DataType
|
7
|
-
CUSTOM = 'CUSTOM'
|
8
|
-
BROWSER = 'BROWSER'
|
9
|
-
CONVERSION = 'CONVERSION'
|
10
|
-
DEVICE = 'DEVICE'
|
11
|
-
PAGE_VIEW = 'PAGE_VIEW'
|
12
|
-
end
|
13
|
-
|
14
|
-
module BrowserType
|
15
|
-
CHROME = 0
|
16
|
-
INTERNET_EXPLORER = 1
|
17
|
-
FIREFOX = 2
|
18
|
-
SAFARI = 3
|
19
|
-
OPERA = 4
|
20
|
-
OTHER = 5
|
21
|
-
end
|
22
|
-
|
23
|
-
module DeviceType
|
24
|
-
PHONE = 'PHONE'
|
25
|
-
TABLET = 'TABLET'
|
26
|
-
DESKTOP = 'DESKTOP'
|
27
|
-
end
|
28
|
-
|
29
|
-
class Data
|
30
|
-
attr_accessor :instance, :sent
|
31
|
-
|
32
|
-
def initialize(*args)
|
33
|
-
raise KameleoonError.new("Cannot initialise interface.")
|
34
|
-
end
|
35
|
-
|
36
|
-
def obtain_full_post_text_line
|
37
|
-
raise KameleoonError.new("ToDo: implement this method.")
|
38
|
-
end
|
39
|
-
|
40
|
-
def encode(url)
|
41
|
-
encoded_url = CGI.escape(url)
|
42
|
-
encoded_url.gsub! "%27", "'"
|
43
|
-
encoded_url.gsub! "%21", "!"
|
44
|
-
encoded_url.gsub! "+", "%20"
|
45
|
-
encoded_url.gsub! "%2A", "*"
|
46
|
-
encoded_url.gsub! "%28", "("
|
47
|
-
encoded_url.gsub! "%29", ")"
|
48
|
-
encoded_url
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
class CustomData < Data
|
53
|
-
attr_accessor :id, :value
|
54
|
-
|
55
|
-
# @param [Integer] id Id of the custom data
|
56
|
-
# @param [String] value Value of the custom data
|
57
|
-
#
|
58
|
-
# @overload
|
59
|
-
# @param [Hash] hash Json value encoded in a hash.
|
60
|
-
def initialize(*args)
|
61
|
-
@instance = DataType::CUSTOM
|
62
|
-
@sent = false
|
63
|
-
unless args.empty?
|
64
|
-
if args.length == 1
|
65
|
-
hash = args.first
|
66
|
-
if hash["id"].nil?
|
67
|
-
raise NotFoundError.new("id")
|
68
|
-
end
|
69
|
-
@id = hash["id"].to_s
|
70
|
-
if hash["value"].nil?
|
71
|
-
raise NotFoundError.new(hash["value"])
|
72
|
-
end
|
73
|
-
@value = hash["value"]
|
74
|
-
elsif args.length == 2
|
75
|
-
@id = args[0].to_s
|
76
|
-
@value = args[1]
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def obtain_full_post_text_line
|
82
|
-
to_encode = "[[\"" + @value.to_s.gsub("\"", "\\\"") + "\",1]]"
|
83
|
-
nonce = Kameleoon::Utils.generate_random_string(NONCE_LENGTH)
|
84
|
-
"eventType=customData&index=" + @id.to_s + "&valueToCount=" + encode(to_encode) + "&overwrite=true&nonce=" + nonce
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
class Browser < Data
|
89
|
-
attr_accessor :browser
|
90
|
-
|
91
|
-
# @param [BrowserType] browser_type Browser type, can be: CHROME, INTERNET_EXPLORER, FIREFOX, SAFARI, OPERA, OTHER
|
92
|
-
def initialize(browser_type)
|
93
|
-
@instance = DataType::BROWSER
|
94
|
-
@sent = false
|
95
|
-
@browser = browser_type
|
96
|
-
end
|
97
|
-
|
98
|
-
def obtain_full_post_text_line
|
99
|
-
nonce = Kameleoon::Utils.generate_random_string(NONCE_LENGTH)
|
100
|
-
"eventType=staticData&browserIndex=" + @browser.to_s + "&nonce=" + nonce
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
class PageView < Data
|
105
|
-
attr_accessor :url, :title, :referrer
|
106
|
-
|
107
|
-
# @param [String] url Url of the page
|
108
|
-
# @param [String] title Title of the page
|
109
|
-
# @param [Array] referrers Optional field - Referrer ids
|
110
|
-
def initialize(url, title, referrers = nil)
|
111
|
-
@instance = DataType::PAGE_VIEW
|
112
|
-
@sent = false
|
113
|
-
@url = url
|
114
|
-
@title = title
|
115
|
-
@referrers = referrers
|
116
|
-
end
|
117
|
-
|
118
|
-
def obtain_full_post_text_line
|
119
|
-
nonce = Kameleoon::Utils.generate_random_string(NONCE_LENGTH)
|
120
|
-
referrer_text = ''
|
121
|
-
unless @referrers.nil?
|
122
|
-
referrer_text = "&referrersIndices=" + @referrers.to_s
|
123
|
-
end
|
124
|
-
"eventType=page&href=" + encode(@url) + "&title=" + @title + referrer_text + "&nonce=" + nonce
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
class Conversion < Data
|
129
|
-
attr_accessor :goal_id, :revenue, :negative
|
130
|
-
|
131
|
-
# @param [Integer] goal_id Id of the goal associated to the conversion
|
132
|
-
# @param [Float] revenue Optional field - Revenue associated to the conversion.
|
133
|
-
# @param [Boolean] negative Optional field - If the revenue is negative. By default it's positive.
|
134
|
-
def initialize(goal_id, revenue = 0.0, negative = false)
|
135
|
-
@instance = DataType::CONVERSION
|
136
|
-
@sent = false
|
137
|
-
@goal_id = goal_id
|
138
|
-
@revenue = revenue
|
139
|
-
@negative = negative
|
140
|
-
end
|
141
|
-
|
142
|
-
def obtain_full_post_text_line
|
143
|
-
nonce = Kameleoon::Utils.generate_random_string(NONCE_LENGTH)
|
144
|
-
"eventType=conversion&goalId=" + @goal_id.to_s + "&revenue=" + @revenue.to_s + "&negative=" + @negative.to_s + "&nonce=" + nonce
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
# Device uses for sending deviceType parameter for tracking calls
|
149
|
-
class Device < Data
|
150
|
-
def initialize(device_type)
|
151
|
-
@instance = DataType::DEVICE
|
152
|
-
@sent = false
|
153
|
-
@device_type = device_type
|
154
|
-
end
|
155
|
-
|
156
|
-
def obtain_full_post_text_line
|
157
|
-
nonce = Kameleoon::Utils.generate_random_string(NONCE_LENGTH)
|
158
|
-
"eventType=staticData&deviceType=#{@device_type}&nonce=#{nonce}"
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
# UserAgent uses for changing User-Agent header for tracking calls
|
163
|
-
class UserAgent
|
164
|
-
attr_accessor :value
|
165
|
-
def initialize(value)
|
166
|
-
@value = value
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|