Class: PostHog::Transport Private
- Inherits:
-
Object
- Object
- PostHog::Transport
- Includes:
- Defaults::Request, Logging, Utils
- Defined in:
- lib/posthog/transport.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
HTTP transport used by the SDK workers.
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, Defaults::Request::SSL
Class Attribute Summary collapse
- .stub ⇒ Object private
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Transport
constructor
private
A new instance of Transport.
-
#send(api_key, batch) ⇒ Response
private
Sends a batch of messages to the API.
-
#shutdown ⇒ void
private
Closes a persistent connection if it exists.
Methods included from Logging
Methods included from Utils
convert_to_datetime, date_in_iso8601, datetime_in_iso8601, deep_symbolize_keys, formatted_offset, get_by_symbol_or_string_key, is_valid_regex, isoify_dates, isoify_dates!, seconds_to_utc_offset, stringify_keys, symbolize_keys, symbolize_keys!, time_in_iso8601, uid
Constructor Details
#initialize(options = {}) ⇒ Transport
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Transport.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/posthog/transport.rb', line 31 def initialize( = {}) if [:api_host] uri = URI.parse([:api_host]) [:host] = uri.host [:ssl] = uri.scheme == 'https' [:port] = uri.port end [:host] = [:host].nil? ? HOST : [:host] [:port] = [:port].nil? ? PORT : [:port] [:ssl] = [:ssl].nil? ? SSL : [:ssl] @headers = [:headers] || HEADERS @path = [:path] || PATH @retries = [:retries] || RETRIES @backoff_policy = [:backoff_policy] || PostHog::BackoffPolicy.new http = Net::HTTP.new([:host], [:port]) http.use_ssl = [:ssl] http.read_timeout = 8 http.open_timeout = 4 http.verify_mode = OpenSSL::SSL::VERIFY_NONE if [:skip_ssl_verification] @http = http @http_mutex = Mutex.new end |
Class Attribute Details
.stub ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
166 167 168 |
# File 'lib/posthog/transport.rb', line 166 def stub @stub || ENV.fetch('STUB', nil) end |
Instance Method Details
#send(api_key, batch) ⇒ Response
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Sends a batch of messages to the API
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/posthog/transport.rb', line 63 def send(api_key, batch) logger.debug("Sending request for #{batch.length} items") last_response, exception = retry_with_backoff(@retries) do status_code, body = send_request(api_key, batch) error = begin JSON.parse(body)['error'] rescue JSON::ParserError body end 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 ⇒ void
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Closes a persistent connection if it exists.
94 95 96 97 98 |
# File 'lib/posthog/transport.rb', line 94 def shutdown @http_mutex.synchronize do @http.finish if @http.started? end end |