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 =
4- TRACKING_CALL_ATTEMPT_NUMBER =
4- TRACKING_CALL_RETRY_DELAY =
in seconds
5.0
Instance Attribute Summary collapse
-
#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_configuration(timestamp = nil, timeout = nil) ⇒ Object
- #get_remote_data(key, timeout = nil) ⇒ Object
- #get_remote_visitor_data(visitor_code, timeout = nil) ⇒ Object
-
#initialize(environment, default_timeout, url_provider, log_func = nil) ⇒ NetworkManager
constructor
A new instance of NetworkManager.
- #send_tracking_data(visitor_code, lines, user_agent, timeout = nil) ⇒ Object
Constructor Details
#initialize(environment, default_timeout, url_provider, log_func = nil) ⇒ NetworkManager
Returns a new instance of NetworkManager.
20 21 22 23 24 25 26 27 |
# File 'lib/kameleoon/network/network_manager.rb', line 20 def initialize(environment, default_timeout, url_provider, log_func = nil) @environment = environment @default_timeout = default_timeout @url_provider = url_provider @em_net_provider = EMNetProvider.new @sync_net_provider = SyncNetProvider.new @log_func = log_func end |
Instance Attribute Details
#default_timeout ⇒ Object (readonly)
Returns the value of attribute default_timeout.
18 19 20 |
# File 'lib/kameleoon/network/network_manager.rb', line 18 def default_timeout @default_timeout end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
18 19 20 |
# File 'lib/kameleoon/network/network_manager.rb', line 18 def environment @environment end |
#url_provider ⇒ Object (readonly)
Returns the value of attribute url_provider.
18 19 20 |
# File 'lib/kameleoon/network/network_manager.rb', line 18 def url_provider @url_provider end |
Instance Method Details
#fetch_configuration(timestamp = nil, timeout = nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/kameleoon/network/network_manager.rb', line 29 def fetch_configuration( = nil, timeout = nil) url = @url_provider.make_configuration_url(@environment, ) timeout = ensure_timeout(timeout) request = Request.new(Method::GET, url, ContentType::JSON, timeout) attempts_left = FETCH_CONFIGURATION_ATTEMPT_NUMBER while attempts_left.positive? em_resp = EM::Synchrony.sync(@em_net_provider.make_request(request)) response = EMNetProvider.em_resp_to_response(request, em_resp) result = handle_response(response) return result if result attempts_left -= 1 end false end |
#get_remote_data(key, timeout = nil) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/kameleoon/network/network_manager.rb', line 45 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) response = @sync_net_provider.make_request(request) handle_response(response) end |
#get_remote_visitor_data(visitor_code, timeout = nil) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/kameleoon/network/network_manager.rb', line 53 def get_remote_visitor_data(visitor_code, timeout = nil) url = @url_provider.make_visitor_data_get_url(visitor_code) timeout = ensure_timeout(timeout) request = Request.new(Method::GET, url, ContentType::JSON, timeout) response = @sync_net_provider.make_request(request) handle_response(response) end |
#send_tracking_data(visitor_code, lines, user_agent, timeout = nil) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/kameleoon/network/network_manager.rb', line 61 def send_tracking_data(visitor_code, lines, user_agent, timeout = nil) return if lines.nil? || lines.empty? url = @url_provider.make_tracking_url(visitor_code) 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, data) Thread.new do attempts_left = TRACKING_CALL_ATTEMPT_NUMBER loop do response = @sync_net_provider.make_request(request) if handle_response(response) != false lines.each { |line| line.sent = true } break end attempts_left -= 1 break unless attempts_left.positive? delay(TRACKING_CALL_RETRY_DELAY) end end end |