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 =
2- TRACKING_CALL_ATTEMPT_NUMBER =
2- 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'- HEADER_IF_MODIFIED_SINCE =
'If-Modified-Since'- HEADER_LAST_MODIFIED =
in lower case because the network lib casts response headers to lower
'last-modified'
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.
-
#event_manager ⇒ Object
readonly
Returns the value of attribute event_manager.
-
#url_provider ⇒ Object
readonly
Returns the value of attribute url_provider.
Instance Method Summary collapse
- #fetch_access_jwtoken(basic_auth_token, timeout = nil) ⇒ Object
- #fetch_configuration(timestamp = nil, timeout = nil, if_modified_since: 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, event_manager) ⇒ NetworkManager
constructor
A new instance of NetworkManager.
- #send_tracking_data(lines, timeout = nil) ⇒ Object
Constructor Details
#initialize(environment, default_timeout, access_token_source_factory, url_provider, event_manager) ⇒ NetworkManager
Returns a new instance of NetworkManager.
29 30 31 32 33 34 35 36 |
# File 'lib/kameleoon/network/network_manager.rb', line 29 def initialize(environment, default_timeout, access_token_source_factory, url_provider, event_manager) @environment = environment @default_timeout = default_timeout @access_token_source = access_token_source_factory.create(self) @url_provider = url_provider @event_manager = event_manager @sync_net_provider = SyncNetProvider.new end |
Instance Attribute Details
#access_token_source ⇒ Object (readonly)
Returns the value of attribute access_token_source.
27 28 29 |
# File 'lib/kameleoon/network/network_manager.rb', line 27 def access_token_source @access_token_source end |
#default_timeout ⇒ Object (readonly)
Returns the value of attribute default_timeout.
27 28 29 |
# File 'lib/kameleoon/network/network_manager.rb', line 27 def default_timeout @default_timeout end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
27 28 29 |
# File 'lib/kameleoon/network/network_manager.rb', line 27 def environment @environment end |
#event_manager ⇒ Object (readonly)
Returns the value of attribute event_manager.
27 28 29 |
# File 'lib/kameleoon/network/network_manager.rb', line 27 def event_manager @event_manager end |
#url_provider ⇒ Object (readonly)
Returns the value of attribute url_provider.
27 28 29 |
# File 'lib/kameleoon/network/network_manager.rb', line 27 def url_provider @url_provider end |
Instance Method Details
#fetch_access_jwtoken(basic_auth_token, timeout = nil) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/kameleoon/network/network_manager.rb', line 77 def fetch_access_jwtoken(basic_auth_token, timeout = nil) url = @url_provider.make_access_token_url timeout = ensure_timeout(timeout) data_map = { grant_type: ACCESS_TOKEN_GRANT_TYPE, } data = UriHelper.encode_query(data_map).encode('UTF-8') request = Request.new(Method::POST, url, ContentType::FORM, timeout, data: data) request.(basic_auth_token) unwrap_response(*make_call(Events::RequestType::ACCESS_TOKEN, request, false)) end |
#fetch_configuration(timestamp = nil, timeout = nil, if_modified_since: nil) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/kameleoon/network/network_manager.rb', line 38 def fetch_configuration( = nil, timeout = nil, if_modified_since: nil) url = @url_provider.make_configuration_url(@environment, ) timeout = ensure_timeout(timeout) headers = { SDK_TYPE_HEADER => SDK_NAME, SDK_VERSION_HEADER => SDK_VERSION } headers[HEADER_IF_MODIFIED_SINCE] = if_modified_since if if_modified_since request = Request.new(Method::GET, url, ContentType::JSON, timeout, extra_headers: headers) response, success = make_call(Events::RequestType::DATAFILE, request, false, FETCH_CONFIGURATION_ATTEMPT_NUMBER - 1) return nil unless success return FetchedConfiguration.new(nil, nil) if response.code == 304 last_modified = response.headers&.[](HEADER_LAST_MODIFIED)&.first FetchedConfiguration.new(response.body, last_modified) end |
#get_remote_data(key, timeout = nil) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/kameleoon/network/network_manager.rb', line 53 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) unwrap_response(*make_call(Events::RequestType::REMOTE_DATA, request, true)) end |
#get_remote_visitor_data(visitor_code, filter, is_unique_identifier, timeout = nil) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/kameleoon/network/network_manager.rb', line 60 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) unwrap_response(*make_call(Events::RequestType::REMOTE_VISITOR_DATA, request, true)) end |
#send_tracking_data(lines, timeout = nil) ⇒ Object
67 68 69 70 71 72 73 74 75 |
# File 'lib/kameleoon/network/network_manager.rb', line 67 def send_tracking_data(lines, timeout = nil) return if lines.nil? || lines.empty? url = @url_provider.make_tracking_url timeout = ensure_timeout(timeout) request = Request.new(Method::POST, url, ContentType::WILDCARD, timeout, data: lines) unwrap_response(*make_call(Events::RequestType::TRACKING, request, true, TRACKING_CALL_ATTEMPT_NUMBER - 1, TRACKING_CALL_RETRY_DELAY)) end |