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::MAX_RETRIES, 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) ⇒ Object
- #shutdown ⇒ Object
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.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rudder/analytics/transport.rb', line 24 def initialize(config) @stub = config.stub || false @path = PATH @retry_policy = Rudder::Analytics::RetryPolicy.from_config(config) @retries = @retry_policy.max_attempts @backoff_policy = @retry_policy.backoff_policy 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.
22 23 24 |
# File 'lib/rudder/analytics/transport.rb', line 22 def stub @stub end |
Instance Method Details
#send(write_key, batch) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rudder/analytics/transport.rb', line 42 def send(write_key, batch) logger.debug("Sending request for #{batch.length} items") retries = 0 loop do begin response, headers = build_response(write_key, batch) return response unless should_retry_request?(response.status, response.error) return response unless retries_remaining?(retries) retries = retry_request(retries, headers, "status #{response.status}") rescue StandardError => e return error_response(e) unless retryable_exception?(e) return error_response(e) unless retries_remaining?(retries) retries = retry_exception(retries, e) end end end |
#shutdown ⇒ Object
63 64 65 |
# File 'lib/rudder/analytics/transport.rb', line 63 def shutdown @http.finish if @http.started? end |