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'- 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.
-
#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, 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) ⇒ 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) ⇒ NetworkManager
Returns a new instance of NetworkManager.
28 29 30 31 32 33 34 |
# File 'lib/kameleoon/network/network_manager.rb', line 28 def initialize(environment, default_timeout, access_token_source_factory, url_provider) @environment = environment @default_timeout = default_timeout @access_token_source = access_token_source_factory.create(self) @url_provider = url_provider @sync_net_provider = SyncNetProvider.new end |
Instance Attribute Details
#access_token_source ⇒ Object (readonly)
Returns the value of attribute access_token_source.
26 27 28 |
# File 'lib/kameleoon/network/network_manager.rb', line 26 def access_token_source @access_token_source end |
#default_timeout ⇒ Object (readonly)
Returns the value of attribute default_timeout.
26 27 28 |
# File 'lib/kameleoon/network/network_manager.rb', line 26 def default_timeout @default_timeout end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
26 27 28 |
# File 'lib/kameleoon/network/network_manager.rb', line 26 def environment @environment end |
#url_provider ⇒ Object (readonly)
Returns the value of attribute url_provider.
26 27 28 |
# File 'lib/kameleoon/network/network_manager.rb', line 26 def url_provider @url_provider end |
Instance Method Details
#fetch_access_jwtoken(client_id, client_secret, timeout = nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/kameleoon/network/network_manager.rb', line 73 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) unwrap_response(*make_call(request, false)) end |
#fetch_configuration(timestamp = nil, timeout = nil, if_modified_since: nil) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/kameleoon/network/network_manager.rb', line 36 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(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
50 51 52 53 54 55 |
# File 'lib/kameleoon/network/network_manager.rb', line 50 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(request, true)) end |
#get_remote_visitor_data(visitor_code, filter, is_unique_identifier, timeout = nil) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/kameleoon/network/network_manager.rb', line 57 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(request, true)) end |
#send_tracking_data(lines, timeout = nil) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/kameleoon/network/network_manager.rb', line 64 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(request, true, TRACKING_CALL_ATTEMPT_NUMBER - 1, TRACKING_CALL_RETRY_DELAY)) end |