class Optimizely::EventDispatcher
Constants
- REQUEST_TIMEOUT
@api constants
Public Class Methods
new(logger: nil, error_handler: nil, proxy_config: nil)
click to toggle source
# File lib/optimizely/event_dispatcher.rb, line 32 def initialize(logger: nil, error_handler: nil, proxy_config: nil) @logger = logger || NoOpLogger.new @error_handler = error_handler || NoOpErrorHandler.new @proxy_config = proxy_config end
Public Instance Methods
dispatch_event(event)
click to toggle source
Dispatch the event being represented by the Event
object.
@param event - Event
object
# File lib/optimizely/event_dispatcher.rb, line 41 def dispatch_event(event) response = Helpers::HttpUtils.make_request( event.url, event.http_verb, event.params.to_json, event.headers, REQUEST_TIMEOUT, @proxy_config ) error_msg = "Event failed to dispatch with response code: #{response.code}" case response.code.to_i when 400...500 @logger.log(Logger::ERROR, error_msg) @error_handler.handle_error(HTTPCallError.new("HTTP Client Error: #{response.code}")) when 500...600 @logger.log(Logger::ERROR, error_msg) @error_handler.handle_error(HTTPCallError.new("HTTP Server Error: #{response.code}")) else @logger.log(Logger::DEBUG, 'event successfully sent with response code ' + response.code.to_s) end rescue Timeout::Error => e @logger.log(Logger::ERROR, "Request Timed out. Error: #{e}") @error_handler.handle_error(e) # Returning Timeout error to retain existing behavior. e rescue StandardError => e @logger.log(Logger::ERROR, "Event failed to dispatch. Error: #{e}") @error_handler.handle_error(e) nil end