Class: Kameleoon::Network::NetworkManager
- Inherits:
-
Object
- Object
- Kameleoon::Network::NetworkManager
- Defined in:
- lib/kameleoon/network/network_manager.rb
Overview
NetworkManager is used to make API calls.
Constant Summary collapse
- FETCH_CONFIGURATION_ATTEMPT_NUMBER =
3- TRACKING_CALL_ATTEMPT_NUMBER =
3- TRACKING_CALL_RETRY_DELAY =
in seconds
5.0- SDK_TYPE_HEADER =
'X-Kameleoon-SDK-Type'- SDK_VERSION_HEADER =
'X-Kameleoon-SDK-Version'- ACCESS_TOKEN_GRANT_TYPE =
'client_credentials'
Instance Attribute Summary collapse
-
#access_token_source ⇒ Object
readonly
Returns the value of attribute access_token_source.
-
#default_timeout ⇒ Object
readonly
Returns the value of attribute default_timeout.
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
-
#url_provider ⇒ Object
readonly
Returns the value of attribute url_provider.
Instance Method Summary collapse
- #fetch_access_jwtoken(client_id, client_secret, timeout = nil) ⇒ Object
- #fetch_configuration(timestamp = nil, timeout = nil) ⇒ Object
- #get_remote_data(key, timeout = nil) ⇒ Object
- #get_remote_visitor_data(visitor_code, filter, is_unique_identifier, timeout = nil) ⇒ Object
-
#initialize(environment, default_timeout, access_token_source_factory, url_provider, log_func = nil) ⇒ NetworkManager
constructor
A new instance of NetworkManager.
- #send_tracking_data(visitor_code, lines, user_agent, is_unique_identifier, timeout = nil) ⇒ Object
Constructor Details
#initialize(environment, default_timeout, access_token_source_factory, url_provider, log_func = nil) ⇒ NetworkManager
Returns a new instance of NetworkManager.
24 25 26 27 28 29 30 31 |
# File 'lib/kameleoon/network/network_manager.rb', line 24 def initialize(environment, default_timeout, access_token_source_factory, url_provider, log_func = nil) @environment = environment @default_timeout = default_timeout @access_token_source = access_token_source_factory.create(self) @url_provider = url_provider @sync_net_provider = SyncNetProvider.new @log_func = log_func end |
Instance Attribute Details
#access_token_source ⇒ Object (readonly)
Returns the value of attribute access_token_source.
22 23 24 |
# File 'lib/kameleoon/network/network_manager.rb', line 22 def access_token_source @access_token_source end |
#default_timeout ⇒ Object (readonly)
Returns the value of attribute default_timeout.
22 23 24 |
# File 'lib/kameleoon/network/network_manager.rb', line 22 def default_timeout @default_timeout end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
22 23 24 |
# File 'lib/kameleoon/network/network_manager.rb', line 22 def environment @environment end |
#url_provider ⇒ Object (readonly)
Returns the value of attribute url_provider.
22 23 24 |
# File 'lib/kameleoon/network/network_manager.rb', line 22 def url_provider @url_provider end |
Instance Method Details
#fetch_access_jwtoken(client_id, client_secret, timeout = nil) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/kameleoon/network/network_manager.rb', line 68 def fetch_access_jwtoken(client_id, client_secret, timeout = nil) url = @url_provider.make_access_token_url timeout = ensure_timeout(timeout) data_map = { grant_type: ACCESS_TOKEN_GRANT_TYPE, client_id: client_id, client_secret: client_secret } data = UriHelper.encode_query(data_map).encode('UTF-8') request = Request.new(Method::POST, url, ContentType::FORM, timeout, data: data) make_call(request, false) end |
#fetch_configuration(timestamp = nil, timeout = nil) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/kameleoon/network/network_manager.rb', line 33 def fetch_configuration( = nil, timeout = nil) url = @url_provider.make_configuration_url(@environment, ) timeout = ensure_timeout(timeout) sdk_headers = { SDK_TYPE_HEADER => SDK_NAME, SDK_VERSION_HEADER => SDK_VERSION } request = Request.new(Method::GET, url, ContentType::JSON, timeout, extra_headers: sdk_headers) make_call(request, false, FETCH_CONFIGURATION_ATTEMPT_NUMBER - 1) end |
#get_remote_data(key, timeout = nil) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/kameleoon/network/network_manager.rb', line 41 def get_remote_data(key, timeout = nil) url = @url_provider.make_api_data_get_request_url(key) timeout = ensure_timeout(timeout) request = Request.new(Method::GET, url, ContentType::JSON, timeout) make_call(request, true) end |
#get_remote_visitor_data(visitor_code, filter, is_unique_identifier, timeout = nil) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/kameleoon/network/network_manager.rb', line 48 def get_remote_visitor_data(visitor_code, filter, is_unique_identifier, timeout = nil) url = @url_provider.make_visitor_data_get_url(visitor_code, filter, is_unique_identifier) timeout = ensure_timeout(timeout) request = Request.new(Method::GET, url, ContentType::JSON, timeout) make_call(request, true) end |
#send_tracking_data(visitor_code, lines, user_agent, is_unique_identifier, timeout = nil) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/kameleoon/network/network_manager.rb', line 55 def send_tracking_data(visitor_code, lines, user_agent, is_unique_identifier, timeout = nil) return if lines.nil? || lines.empty? url = @url_provider.make_tracking_url(visitor_code, is_unique_identifier) timeout = ensure_timeout(timeout) data = (lines.map(&:obtain_full_post_text_line).join("\n") || '').encode('UTF-8') request = Request.new(Method::POST, url, ContentType::TEXT, timeout, user_agent: user_agent, data: data) Thread.new do result = make_call(request, true, TRACKING_CALL_ATTEMPT_NUMBER - 1, TRACKING_CALL_RETRY_DELAY) lines.each(&:mark_as_sent) if result != false end end |