class FastlaneCore::AnalyticsIngesterClient

Constants

GA_URL

Public Class Methods

new(ga_tracking) click to toggle source
# File fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb, line 13
def initialize(ga_tracking)
  @ga_tracking = ga_tracking
end

Public Instance Methods

post_event(event) click to toggle source
# File fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb, line 17
def post_event(event)
  # If our users want to opt out of usage metrics, don't post the events.
  # Learn more at https://docs.fastlane.tools/#metrics
  if Helper.test? || FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
    return nil
  end
  return Thread.new do
    send_request(event)
  end
end
post_request(event) click to toggle source
# File fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb, line 35
def post_request(event)
  connection = Faraday.new(GA_URL) do |conn|
    conn.request(:url_encoded)
    conn.adapter(Faraday.default_adapter)
  end
  connection.headers[:user_agent] = 'fastlane/' + Fastlane::VERSION
  connection.post("/collect", {
    v: "1",                                            # API Version
    tid: @ga_tracking,                                 # Tracking ID / Property ID
    cid: event[:client_id],                            # Client ID
    t: "event",                                        # Event hit type
    ec: event[:category],                              # Event category
    ea: event[:action],                                # Event action
    el: event[:label] || "na",                         # Event label
    ev: event[:value] || "0",                          # Event value
    aip: "1"                                           # IP anonymization
  })
end
send_request(event, retries: 2) click to toggle source
# File fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb, line 28
def send_request(event, retries: 2)
  post_request(event)
rescue
  retries -= 1
  retry if retries >= 0
end