Class: Rudder::Analytics::Transport
- Inherits:
-
Object
- Object
- Rudder::Analytics::Transport
- Includes:
- Defaults::Request, Logging, Utils
- Defined in:
- lib/rudder/analytics/transport.rb
Constant Summary
Constants included from Utils
Utils::UTC_OFFSET_WITHOUT_COLON, Utils::UTC_OFFSET_WITH_COLON
Constants included from Defaults::Request
Defaults::Request::HEADERS, Defaults::Request::HOST, Defaults::Request::PATH, Defaults::Request::PORT, Defaults::Request::RETRIES
Instance Attribute Summary collapse
-
#stub ⇒ Object
readonly
Returns the value of attribute stub.
Instance Method Summary collapse
-
#initialize(config) ⇒ Transport
constructor
A new instance of Transport.
-
#send(write_key, batch) ⇒ Response
Sends a batch of messages to the API.
-
#shutdown ⇒ Object
Closes a persistent connection if it exists.
Methods included from Logging
Methods included from Utils
#check_string, #date_in_iso8601, #datetime_in_iso8601, #formatted_offset, #isoify_dates, #isoify_dates!, #seconds_to_utc_offset, #stringify_keys, #symbolize_keys, #symbolize_keys!, #time_in_iso8601, #uid
Constructor Details
#initialize(config) ⇒ Transport
Returns a new instance of Transport.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rudder/analytics/transport.rb', line 23 def initialize(config) @stub = config.stub || false @path = PATH @retries = config.retries || RETRIES @backoff_policy = config.backoff_policy || Rudder::Analytics::BackoffPolicy.new uri = URI(config.data_plane_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = config.ssl.nil? ? true : config.ssl http.read_timeout = 8 http.open_timeout = 4 @http = http @gzip = config.gzip.nil? ? true : config.gzip end |
Instance Attribute Details
#stub ⇒ Object (readonly)
Returns the value of attribute stub.
21 22 23 |
# File 'lib/rudder/analytics/transport.rb', line 21 def stub @stub end |
Instance Method Details
#send(write_key, batch) ⇒ Response
Sends a batch of messages to the API
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 |
# File 'lib/rudder/analytics/transport.rb', line 43 def send(write_key, batch) logger.debug("Sending request for #{batch.length} items") last_response, exception = retry_with_backoff(@retries) do status_code, body = send_request(write_key, batch) error = body # rudder server now return 'OK' # begin # error = JSON.parse(body)['error'] # rescue StandardError # error = JSON.parse(body.to_json) # end # puts error should_retry = should_retry_request?(status_code, body) logger.debug("Response status code: #{status_code}") logger.debug("Response error: #{error}") if error [Response.new(status_code, error), should_retry] end if exception logger.error(exception.) exception.backtrace.each { |line| logger.error(line) } Response.new(-1, exception.to_s) else last_response end end |
#shutdown ⇒ Object
Closes a persistent connection if it exists
74 75 76 |
# File 'lib/rudder/analytics/transport.rb', line 74 def shutdown @http.finish if @http.started? end |