kameleoon-client-ruby 3.10.0 → 3.11.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.
- checksums.yaml +4 -4
- data/lib/kameleoon/data/conversion.rb +23 -3
- data/lib/kameleoon/data/custom_data.rb +0 -6
- data/lib/kameleoon/kameleoon_client.rb +14 -6
- data/lib/kameleoon/utils.rb +16 -0
- data/lib/kameleoon/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d70f414ac8fb37aa97f11f9a01008c602e828efe9305399964910914eff43050
|
4
|
+
data.tar.gz: 52ece8845cf02e17198268fd9b5b8e3275c86a11bbf01acc7e68362a80a64e46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d62ef28c65650b491fd47beebb8dbdcee803cf78faacec4c998a6e02681cbf0f0aeb032db78637e94703eeb88de7821eb1fe84b4fd943ee65328cd87942332c9
|
7
|
+
data.tar.gz: 7e980fbb43d05dcdefceb257d003f7846e2bb131f0814216dcec56ef3273b35fe65ffac0cabe4cff1cbb0da1cb6095f41ca63c05241d42d972a844094e0d83d5
|
@@ -1,26 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'json'
|
4
|
+
require 'kameleoon/data/custom_data'
|
4
5
|
require 'kameleoon/network/uri_helper'
|
6
|
+
require 'kameleoon/utils'
|
5
7
|
require_relative 'data'
|
6
8
|
|
7
9
|
module Kameleoon
|
8
10
|
# Conversion class uses for tracking conversion
|
9
11
|
class Conversion < DuplicationSafeData
|
10
|
-
attr_reader :goal_id, :revenue, :negative
|
12
|
+
attr_reader :goal_id, :revenue, :negative, :metadata
|
11
13
|
|
12
14
|
def to_s
|
13
|
-
"Conversion{goal_id:#{@goal_id},revenue:#{@revenue},negative:#{@negative}
|
15
|
+
"Conversion{goal_id:#{@goal_id},revenue:#{@revenue},negative:#{@negative}," \
|
16
|
+
"metadata:#{Utils::Strval.obj_to_s(@metadata)}}"
|
14
17
|
end
|
15
18
|
|
16
19
|
# @param [Integer] goal_id Id of the goal associated to the conversion
|
17
20
|
# @param [Float] revenue Optional field - Revenue associated to the conversion.
|
18
21
|
# @param [Boolean] negative Optional field - If the revenue is negative. By default it's positive.
|
19
|
-
|
22
|
+
# @param [Array] metadata Optional field - Metadata of the conversion. Array of CustomData objects.
|
23
|
+
def initialize(goal_id, revenue = 0.0, negative = false, metadata: nil)
|
20
24
|
super(DataType::CONVERSION)
|
21
25
|
@goal_id = goal_id
|
22
26
|
@revenue = revenue || 0.0
|
23
27
|
@negative = negative || false
|
28
|
+
@metadata = metadata
|
24
29
|
end
|
25
30
|
|
26
31
|
def obtain_full_post_text_line
|
@@ -31,7 +36,22 @@ module Kameleoon
|
|
31
36
|
negative: @negative,
|
32
37
|
nonce: nonce
|
33
38
|
}
|
39
|
+
params[:metadata] = encode_metadata if @metadata&.length&.positive?
|
34
40
|
Kameleoon::Network::UriHelper.encode_query(params)
|
35
41
|
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def encode_metadata
|
46
|
+
metadata = {}
|
47
|
+
added_indices = Set[]
|
48
|
+
@metadata&.each do |mcd|
|
49
|
+
next if !mcd.is_a?(CustomData) || added_indices.include?(mcd.id)
|
50
|
+
|
51
|
+
metadata[mcd.id] = mcd.values
|
52
|
+
added_indices.add(mcd.id)
|
53
|
+
end
|
54
|
+
JSON.generate(metadata)
|
55
|
+
end
|
36
56
|
end
|
37
57
|
end
|
@@ -38,10 +38,6 @@ module Kameleoon
|
|
38
38
|
@values = args
|
39
39
|
end
|
40
40
|
|
41
|
-
if @values.empty?
|
42
|
-
Logging::KameleoonLogger.error('Created a custom data %s with no values. It will not be tracked.', @id)
|
43
|
-
end
|
44
|
-
|
45
41
|
return if @id.is_a?(Integer)
|
46
42
|
|
47
43
|
Logging::KameleoonLogger.warning("CustomData field 'id' must be of 'Integer' type")
|
@@ -50,8 +46,6 @@ module Kameleoon
|
|
50
46
|
# rubocop:enable Metrics/MethodLength
|
51
47
|
|
52
48
|
def obtain_full_post_text_line
|
53
|
-
return '' if @values.empty?
|
54
|
-
|
55
49
|
str_values = JSON.generate(Hash[@values.collect { |k| [k, 1] }])
|
56
50
|
params = {
|
57
51
|
eventType: 'customData',
|
@@ -186,21 +186,29 @@ module Kameleoon
|
|
186
186
|
# @param [Float] revenue Optional - Revenue of the conversion.
|
187
187
|
# @param [Bool] is_unique_identifier(DEPRECATED) Parameter that specifies whether the visitorCode is a unique
|
188
188
|
# identifier. This field is optional.
|
189
|
+
# @param [Bool] negative Defines if the revenue is positive or negative.
|
190
|
+
# This field is optional (`false` by default).
|
191
|
+
# @param [Array] metadata Metadata of the conversion. This field is optional.
|
189
192
|
#
|
190
193
|
# @raise [Kameleoon::Exception::VisitorCodeInvalid] If the visitor code is empty or longer than 255 chars
|
191
194
|
#
|
192
|
-
def track_conversion(
|
195
|
+
def track_conversion(
|
196
|
+
visitor_code, goal_id, revenue = 0.0,
|
197
|
+
is_unique_identifier: nil, negative: false, metadata: nil
|
198
|
+
)
|
193
199
|
Logging::KameleoonLogger.info(
|
194
|
-
"CALL: KameleoonClient.track_conversion(visitor_code: '%s', goal_id: %s, revenue: %s,
|
195
|
-
|
200
|
+
"CALL: KameleoonClient.track_conversion(visitor_code: '%s', goal_id: %s, revenue: %s, " \
|
201
|
+
'is_unique_identifier: %s, negative: %s, metadata: %s)',
|
202
|
+
visitor_code, goal_id, revenue, is_unique_identifier, negative, metadata
|
196
203
|
)
|
197
204
|
Utils::VisitorCode.validate(visitor_code)
|
198
205
|
set_unique_identifier(visitor_code, is_unique_identifier) unless is_unique_identifier.nil?
|
199
|
-
add_data(visitor_code, Conversion.new(goal_id, revenue))
|
206
|
+
add_data(visitor_code, Conversion.new(goal_id, revenue, negative, metadata: metadata))
|
200
207
|
@tracking_manager.add_visitor_code(visitor_code)
|
201
208
|
Logging::KameleoonLogger.info(
|
202
|
-
"RETURN: KameleoonClient.track_conversion(visitor_code: '%s', goal_id: %s, revenue: %s,
|
203
|
-
|
209
|
+
"RETURN: KameleoonClient.track_conversion(visitor_code: '%s', goal_id: %s, revenue: %s, " \
|
210
|
+
'is_unique_identifier: %s, negative: %s, metadata: %s)',
|
211
|
+
visitor_code, goal_id, revenue, is_unique_identifier, negative, metadata
|
204
212
|
)
|
205
213
|
end
|
206
214
|
|
data/lib/kameleoon/utils.rb
CHANGED
@@ -50,6 +50,22 @@ module Kameleoon
|
|
50
50
|
end
|
51
51
|
|
52
52
|
module Strval
|
53
|
+
def self.obj_to_s(obj)
|
54
|
+
case obj
|
55
|
+
when nil
|
56
|
+
'nil'
|
57
|
+
when String
|
58
|
+
"'#{obj}'"
|
59
|
+
when Array
|
60
|
+
"[#{obj.map { |v| obj_to_s(v) }.join(',')}]"
|
61
|
+
when Hash
|
62
|
+
sb = []
|
63
|
+
obj.each { |k, v| sb.push("#{obj_to_s(k)}:#{obj_to_s(v)}") }
|
64
|
+
"{#{sb.join(',')}}"
|
65
|
+
else
|
66
|
+
obj.to_s
|
67
|
+
end
|
68
|
+
end
|
53
69
|
|
54
70
|
def self.secret(secret)
|
55
71
|
hid_ch = '*'
|
data/lib/kameleoon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kameleoon-client-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kameleoon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-03-
|
11
|
+
date: 2025-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|