Sha256: f7c763e9b53463921789766ec10455bf6931f95229bd79254873dcc1643d9d48

Contents?: true

Size: 1.75 KB

Versions: 158

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

module SplitIoClient
  module Api
    class Metrics < Client
      def initialize(api_key, metrics_repository, config)
        super(config)
        @api_key = api_key
        @metrics_repository = metrics_repository
      end

      def post
        post_latencies
        post_counts
      end

      private

      def post_latencies
        if @metrics_repository.latencies.empty?
          @config.split_logger.log_if_debug('No latencies to report.')
        else
          @metrics_repository.latencies.each do |name, latencies|
            metrics_time = { name: name, latencies: latencies }

            response = post_api("#{@config.events_uri}/metrics/time", @api_key, metrics_time)

            log_status(response, metrics_time.size)
          end
        end

        @metrics_repository.clear_latencies
      end

      def post_counts
        if @metrics_repository.counts.empty?
          @config.split_logger.log_if_debug('No counts to report.')
        else
          @metrics_repository.counts.each do |name, count|
            metrics_count = { name: name, delta: count }

            response = post_api("#{@config.events_uri}/metrics/counter", @api_key, metrics_count)

            log_status(response, metrics_count.size)
          end
        end
        @metrics_repository.clear_counts
      end

      def log_status(response, info_to_log)
        if response.success?
          @config.split_logger.log_if_debug("Metric time reported: #{info_to_log}")
        else
          @config.logger.error("Unexpected status code while posting time metrics: #{response.status}" \
          ' - Check your API key and base URI')
          raise 'Split SDK failed to connect to backend to post metrics'
        end
      end
    end
  end
end

Version data entries

158 entries across 158 versions & 1 rubygems

Version Path
splitclient-rb-7.2.3-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.3 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.3.pre.rc2-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.3.pre.rc2 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.3.pre.rc1-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.3.pre.rc1 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.2-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.2 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.2.pre.rc1-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.2.pre.rc1 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.1-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.1 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.1.pre.rc1-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.1.pre.rc1 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.0.pre.rc1-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.0.pre.rc1 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.0-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.2.0 lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.1.4.pre.rc19-java lib/splitclient-rb/engine/api/metrics.rb
splitclient-rb-7.1.4.pre.rc19 lib/splitclient-rb/engine/api/metrics.rb