Sha256: b2798fec463bc7f3e814c946ac97c68d717518a0193ba7df36af33e3fd492f56

Contents?: true

Size: 1.22 KB

Versions: 55

Compression:

Stored size: 1.22 KB

Contents

module SplitIoClient
  module Api
    class Impressions < Client
      def initialize(api_key, config, impressions)
        @config = config
        @api_key = api_key
        @impressions = impressions
      end

      def post
        if @impressions.empty?
          @config.logger.debug('No impressions to report') if @config.debug_enabled
          return
        end

        impressions_by_ip.each do |ip, impressions|
          result = post_api("#{@config.events_uri}/testImpressions/bulk", @config, @api_key, impressions, 'SplitSDKMachineIP' => ip)

          if (200..299).include? result.status
            @config.logger.debug("Impressions reported: #{total_impressions(@impressions)}") if @config.debug_enabled
          else
            @config.logger.error("Unexpected status code while posting impressions: #{result.status}")
          end
        end
      end

      def total_impressions(impressions)
        return 0 if impressions.nil?

        impressions.reduce(0) do |impressions_count, impression|
          impressions_count += impression[:keyImpressions].length
        end
      end

      private

      def impressions_by_ip
        @impressions.group_by { |impression| impression[:ip] }
      end
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
splitclient-rb-5.1.0-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.1.0 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.1.0.pre.rc1-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.1.0.pre.rc1 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.3-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.3 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.3.pre.rc1-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.3.pre.rc1 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.2-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.2 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.2.pre.rc1-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.2.pre.rc1 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.1-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.1 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.1.pre.rc1-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.1.pre.rc1 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.0-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.0 lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.0.pre.rc1-java lib/splitclient-rb/engine/api/impressions.rb
splitclient-rb-5.0.0.pre.rc1 lib/splitclient-rb/engine/api/impressions.rb