Class: Optimizely::EventDispatcher
- Inherits:
-
Object
- Object
- Optimizely::EventDispatcher
- Defined in:
- lib/optimizely/event_dispatcher.rb
Constant Summary collapse
- REQUEST_TIMEOUT =
10
Instance Method Summary collapse
-
#dispatch_event(event) ⇒ Object
Dispatch the event being represented by the Event object.
-
#initialize(logger: nil, error_handler: nil) ⇒ EventDispatcher
constructor
A new instance of EventDispatcher.
Constructor Details
#initialize(logger: nil, error_handler: nil) ⇒ EventDispatcher
Returns a new instance of EventDispatcher.
33 34 35 36 |
# File 'lib/optimizely/event_dispatcher.rb', line 33 def initialize(logger: nil, error_handler: nil) @logger = logger || NoOpLogger.new @error_handler = error_handler || NoOpErrorHandler.new end |
Instance Method Details
#dispatch_event(event) ⇒ Object
Dispatch the event being represented by the Event object.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/optimizely/event_dispatcher.rb', line 41 def dispatch_event(event) if event.http_verb == :get response = HTTParty.get(event.url, headers: event.headers, query: event.params, timeout: REQUEST_TIMEOUT) elsif event.http_verb == :post response = HTTParty.post(event.url, body: event.params.to_json, headers: event.headers, timeout: REQUEST_TIMEOUT) end error_msg = "Event failed to dispatch with response code: #{response.code}" case response.code 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 |