Sha256: 8894da23d4aa4758f82d0249417296305c941c276030c5bf8630fea0b7eb7906

Contents?: true

Size: 1.19 KB

Versions: 161

Compression:

Stored size: 1.19 KB

Contents

require 'openssl'

require_relative '../helper'

module FastlaneCore
  class AnalyticsIngesterClient
    def post_events(events)
      unless Helper.test?
        Thread.new do
          send_request(json: { analytics: events }.to_json)
        end
      end
      return true
    end

    def send_request(json: nil, retries: 2)
      post_request(body: json)
    rescue
      retries -= 1
      retry if retries >= 0
    end

    def post_request(body: nil)
      if ENV['METRICS_DEBUG']
        write_json(body)
      end
      url = ENV["FASTLANE_METRICS_URL"] || "https://fastlane-metrics.fabric.io"

      require 'faraday'
      connection = Faraday.new(url) do |conn|
        conn.adapter(Faraday.default_adapter)
        if ENV['METRICS_DEBUG']
          conn.proxy = "https://127.0.0.1:8888"
          conn.ssl[:verify_mode] = OpenSSL::SSL::VERIFY_NONE
        end
      end
      connection.post do |req|
        req.url('/public')
        req.headers['Content-Type'] = 'application/json'
        req.body = body
      end
    end

    # This method is only for debugging purposes
    def write_json(body)
      File.write("#{ENV['HOME']}/Desktop/mock_analytics-#{Time.now.to_i}.json", body)
    end
  end
end

Version data entries

161 entries across 161 versions & 1 rubygems

Version Path
fastlane-2.76.0.beta.20180110010004 fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb