kameleoon-client-ruby 1.0.10 → 1.1.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/client.rb +36 -1
- data/lib/kameleoon/request.rb +25 -1
- 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: 39f1a248856acac59bccf9df044f714962c44859ac9d253cfce7d4c963506d72
|
4
|
+
data.tar.gz: 9931a050f2b2de5e761a16b276a88a47a833b8f094f6e62be29794ff4dc56fd1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 238bbd2ccd8bd757dea1ee47326d412f5614bb031f5e6f2e27ac4f300a13455df1b9d7bcd70049324d50486db627f451ffdf46fe3805fe76cea44454e3d408af
|
7
|
+
data.tar.gz: 94660b0ffc6c5e04478362a28db232998ac38a848fa0974331f2dd9364a150eb07c8474c5b4d66b234c997de99330eda73f02e31a6be24f98b07127a7566b860
|
data/lib/kameleoon/client.rb
CHANGED
@@ -9,6 +9,8 @@ require 'rufus/scheduler'
|
|
9
9
|
require 'yaml'
|
10
10
|
require 'json'
|
11
11
|
require 'em-synchrony'
|
12
|
+
require 'em-synchrony/em-http'
|
13
|
+
require 'em-synchrony/fiber_iterator'
|
12
14
|
require 'objspace'
|
13
15
|
require 'time'
|
14
16
|
|
@@ -31,6 +33,7 @@ module Kameleoon
|
|
31
33
|
@default_timeout = config['default_timeout'] || default_timeout # in ms
|
32
34
|
@interval = config['actions_configuration_refresh_interval'].to_s + 'm' || interval
|
33
35
|
@tracking_url = config['tracking_url'] || "https://api-ssx.kameleoon.com"
|
36
|
+
@api_data_url = "https://api-data.kameleoon.com"
|
34
37
|
@client_id = client_id || config['client_id']
|
35
38
|
@client_secret = client_secret || config['client_secret']
|
36
39
|
@data_maximum_size = config['visitor_data_maximum_size'] || 500 # mb
|
@@ -293,7 +296,7 @@ module Kameleoon
|
|
293
296
|
# A feature variable can be changed easily via our web application.
|
294
297
|
#
|
295
298
|
# @param [String | Integer] feature_key
|
296
|
-
# @param [String
|
299
|
+
# @param [String] variable_key
|
297
300
|
#
|
298
301
|
# @raise [Kameleoon::Exception::FeatureConfigurationNotFound]
|
299
302
|
# @raise [Kameleoon::Exception::FeatureVariableNotFound]
|
@@ -318,6 +321,30 @@ module Kameleoon
|
|
318
321
|
end
|
319
322
|
end
|
320
323
|
|
324
|
+
##
|
325
|
+
# The retrieved_data_from_remote_source method allows you to retrieve data (according to a key passed as argument)
|
326
|
+
# stored on a remote Kameleoon server. Usually data will be stored on our remote servers via the use of our Data API.
|
327
|
+
# This method, along with the availability of our highly scalable servers for this purpose, provides a convenient way
|
328
|
+
# to quickly store massive amounts of data that can be later retrieved for each of your visitors / users.
|
329
|
+
#
|
330
|
+
# @param [String] key Key you want to retrieve data. This field is mandatory.
|
331
|
+
# @param [Int] timeout Timeout for request. Equals default_timeout in a config file. This field is optional.
|
332
|
+
#
|
333
|
+
# @return [Hash] Hash object of the json object.
|
334
|
+
#
|
335
|
+
#
|
336
|
+
def retrieve_data_from_remote_source(key, timeout = @default_timeout)
|
337
|
+
connexion_options = { connect_timeout: (timeout.to_f / 1000.0) }
|
338
|
+
path = get_api_data_request_url(key)
|
339
|
+
log "Retrieve API Data connexion: #{connexion_options.inspect}"
|
340
|
+
response = get_sync(@api_data_url + path, connexion_options)
|
341
|
+
if is_successful_sync(response)
|
342
|
+
JSON.parse(response.body) unless response.nil?
|
343
|
+
else
|
344
|
+
return nil
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
321
348
|
private
|
322
349
|
|
323
350
|
API_SSX_URL = 'https://api-ssx.kameleoon.com'
|
@@ -582,6 +609,14 @@ module Kameleoon
|
|
582
609
|
"/dataTracking?" + URI.encode_www_form(get_common_ssx_parameters(visitor_code))
|
583
610
|
end
|
584
611
|
|
612
|
+
def get_api_data_request_url(key)
|
613
|
+
mapKey = {
|
614
|
+
siteCode: site_code,
|
615
|
+
key: key
|
616
|
+
}
|
617
|
+
"/data?#{URI.encode_www_form(mapKey)}"
|
618
|
+
end
|
619
|
+
|
585
620
|
def get_feature_flag(feature_key)
|
586
621
|
if feature_key.is_a?(String)
|
587
622
|
feature_flag = @feature_flags.select { |ff| ff['identificationKey'] == feature_key}.first
|
data/lib/kameleoon/request.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "em-synchrony/em-http"
|
2
2
|
require "kameleoon/version"
|
3
|
+
require 'net/http'
|
3
4
|
|
4
5
|
module Kameleoon
|
5
6
|
# @api private
|
@@ -20,6 +21,10 @@ module Kameleoon
|
|
20
21
|
request(Method::POST, request_options, url, connexion_options)
|
21
22
|
end
|
22
23
|
|
24
|
+
def get_sync(url = API_URL, connexion_options = {})
|
25
|
+
request_sync(Method::GET, url, connexion_options)
|
26
|
+
end
|
27
|
+
|
23
28
|
private
|
24
29
|
|
25
30
|
def request(method, request_options, url, connexion_options)
|
@@ -29,7 +34,22 @@ module Kameleoon
|
|
29
34
|
when Method::POST then
|
30
35
|
return EventMachine::HttpRequest.new(url, connexion_options).apost request_options
|
31
36
|
when Method::GET then
|
32
|
-
return EventMachine::HttpRequest.new(url, connexion_options).
|
37
|
+
return EventMachine::HttpRequest.new(url, connexion_options).get request_options
|
38
|
+
else
|
39
|
+
print "Unknown request type"
|
40
|
+
return false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def request_sync(method, url, connexion_options)
|
45
|
+
request_options = {} if request_options.nil?
|
46
|
+
add_user_agent(request_options)
|
47
|
+
case method
|
48
|
+
when Method::GET then
|
49
|
+
uri = URI(url)
|
50
|
+
request = Net::HTTP.new(url)
|
51
|
+
response = Net::HTTP.get_response(uri)
|
52
|
+
response
|
33
53
|
else
|
34
54
|
print "Unknown request type"
|
35
55
|
return false
|
@@ -40,6 +60,10 @@ module Kameleoon
|
|
40
60
|
!request.nil? && request != false && /20\d/.match(request.response_header.status.to_s)
|
41
61
|
end
|
42
62
|
|
63
|
+
def is_successful_sync(response)
|
64
|
+
!response.nil? && response != false && response.is_a?(Net::HTTPSuccess)
|
65
|
+
end
|
66
|
+
|
43
67
|
def add_user_agent(request_options)
|
44
68
|
if request_options[:head].nil?
|
45
69
|
request_options[:head] = {'Kameleoon-Client' => 'sdk/ruby/' + Kameleoon::VERSION}
|
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: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kameleoon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|