analytics-ruby 2.2.8 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 783cffe105e269e46ad1a00c48deef3a8259a909ea0c5840a187cd37ec13f00d
         | 
| 4 | 
            +
              data.tar.gz: d2255cdde8b5ea28ade9b3c4a58459d5488423ad53241d284bf0b3d883e97863
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f81af66cb669884d651cc24972795e72141696b13458786593d82b31f15d5c3589ebf2047e98f1a3d3ec276fc4d7e705436865bd0e349643161bfa7356618b46
         | 
| 7 | 
            +
              data.tar.gz: 7c477ea2e3cfb3fe4c7540d649c33e2efd906690a32841d1a549820a0575818637611e389f47c3644ec0380dab3cfdf9ebf124b095a29066d7962a5322f2d003
         | 
    
        data/lib/segment/analytics.rb
    CHANGED
    
    | @@ -4,7 +4,7 @@ require 'segment/analytics/utils' | |
| 4 4 | 
             
            require 'segment/analytics/field_parser'
         | 
| 5 5 | 
             
            require 'segment/analytics/client'
         | 
| 6 6 | 
             
            require 'segment/analytics/worker'
         | 
| 7 | 
            -
            require 'segment/analytics/ | 
| 7 | 
            +
            require 'segment/analytics/transport'
         | 
| 8 8 | 
             
            require 'segment/analytics/response'
         | 
| 9 9 | 
             
            require 'segment/analytics/logging'
         | 
| 10 10 |  | 
| @@ -18,7 +18,7 @@ module Segment | |
| 18 18 | 
             
                # @option options [Boolean] :stub (false) If true, requests don't hit the
         | 
| 19 19 | 
             
                #   server and are stubbed to be successful.
         | 
| 20 20 | 
             
                def initialize(options = {})
         | 
| 21 | 
            -
                   | 
| 21 | 
            +
                  Transport.stub = options[:stub] if options.has_key?(:stub)
         | 
| 22 22 | 
             
                  @client = Segment::Analytics::Client.new options
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| @@ -9,13 +9,11 @@ require 'json' | |
| 9 9 |  | 
| 10 10 | 
             
            module Segment
         | 
| 11 11 | 
             
              class Analytics
         | 
| 12 | 
            -
                class  | 
| 12 | 
            +
                class Transport
         | 
| 13 13 | 
             
                  include Segment::Analytics::Defaults::Request
         | 
| 14 14 | 
             
                  include Segment::Analytics::Utils
         | 
| 15 15 | 
             
                  include Segment::Analytics::Logging
         | 
| 16 16 |  | 
| 17 | 
            -
                  # public: Creates a new request object to send analytics batch
         | 
| 18 | 
            -
                  #
         | 
| 19 17 | 
             
                  def initialize(options = {})
         | 
| 20 18 | 
             
                    options[:host] ||= HOST
         | 
| 21 19 | 
             
                    options[:port] ||= PORT
         | 
| @@ -34,10 +32,10 @@ module Segment | |
| 34 32 | 
             
                    @http = http
         | 
| 35 33 | 
             
                  end
         | 
| 36 34 |  | 
| 37 | 
            -
                  #  | 
| 35 | 
            +
                  # Sends a batch of messages to the API
         | 
| 38 36 | 
             
                  #
         | 
| 39 | 
            -
                  #  | 
| 40 | 
            -
                  def  | 
| 37 | 
            +
                  # @return [Response] API response
         | 
| 38 | 
            +
                  def send(write_key, batch)
         | 
| 41 39 | 
             
                    logger.debug("Sending request for #{batch.length} items")
         | 
| 42 40 |  | 
| 43 41 | 
             
                    last_response, exception = retry_with_backoff(@retries) do
         | 
| @@ -59,6 +57,11 @@ module Segment | |
| 59 57 | 
             
                    end
         | 
| 60 58 | 
             
                  end
         | 
| 61 59 |  | 
| 60 | 
            +
                  # Closes a persistent connection if it exists
         | 
| 61 | 
            +
                  def shutdown
         | 
| 62 | 
            +
                    @http.finish if @http.started?
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
             | 
| 62 65 | 
             
                  private
         | 
| 63 66 |  | 
| 64 67 | 
             
                  def should_retry_request?(status_code, body)
         | 
| @@ -117,6 +120,7 @@ module Segment | |
| 117 120 |  | 
| 118 121 | 
             
                      [200, '{}']
         | 
| 119 122 | 
             
                    else
         | 
| 123 | 
            +
                      @http.start unless @http.started? # Maintain a persistent connection
         | 
| 120 124 | 
             
                      response = @http.request(request, payload)
         | 
| 121 125 | 
             
                      [response.code.to_i, response.body]
         | 
| 122 126 | 
             
                    end
         | 
| @@ -64,12 +64,8 @@ module Segment | |
| 64 64 | 
             
                    end
         | 
| 65 65 | 
             
                  end
         | 
| 66 66 |  | 
| 67 | 
            -
                  def time_in_iso8601(time | 
| 68 | 
            -
                     | 
| 69 | 
            -
                                 ('.%06i' % time.usec)[0, fraction_digits + 1]
         | 
| 70 | 
            -
                               end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                    "#{time.strftime('%Y-%m-%dT%H:%M:%S')}#{fraction}#{formatted_offset(time, true, 'Z')}"
         | 
| 67 | 
            +
                  def time_in_iso8601(time)
         | 
| 68 | 
            +
                    "#{time.strftime('%Y-%m-%dT%H:%M:%S.%6N')}#{formatted_offset(time, true, 'Z')}"
         | 
| 73 69 | 
             
                  end
         | 
| 74 70 |  | 
| 75 71 | 
             
                  def date_in_iso8601(date)
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            require 'segment/analytics/defaults'
         | 
| 2 2 | 
             
            require 'segment/analytics/message_batch'
         | 
| 3 | 
            -
            require 'segment/analytics/ | 
| 3 | 
            +
            require 'segment/analytics/transport'
         | 
| 4 4 | 
             
            require 'segment/analytics/utils'
         | 
| 5 5 |  | 
| 6 6 | 
             
            module Segment
         | 
| @@ -29,6 +29,7 @@ module Segment | |
| 29 29 | 
             
                    batch_size = options[:batch_size] || Defaults::MessageBatch::MAX_SIZE
         | 
| 30 30 | 
             
                    @batch = MessageBatch.new(batch_size)
         | 
| 31 31 | 
             
                    @lock = Mutex.new
         | 
| 32 | 
            +
                    @transport = Transport.new
         | 
| 32 33 | 
             
                  end
         | 
| 33 34 |  | 
| 34 35 | 
             
                  # public: Continuously runs the loop to check for new events
         | 
| @@ -41,11 +42,13 @@ module Segment | |
| 41 42 | 
             
                        consume_message_from_queue! until @batch.full? || @queue.empty?
         | 
| 42 43 | 
             
                      end
         | 
| 43 44 |  | 
| 44 | 
            -
                      res =  | 
| 45 | 
            +
                      res = @transport.send @write_key, @batch
         | 
| 45 46 | 
             
                      @on_error.call(res.status, res.error) unless res.status == 200
         | 
| 46 47 |  | 
| 47 48 | 
             
                      @lock.synchronize { @batch.clear }
         | 
| 48 49 | 
             
                    end
         | 
| 50 | 
            +
                  ensure
         | 
| 51 | 
            +
                    @transport.shutdown
         | 
| 49 52 | 
             
                  end
         | 
| 50 53 |  | 
| 51 54 | 
             
                  # public: Check whether we have outstanding requests.
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: analytics-ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Segment.io
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2021-03-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: commander
         | 
| @@ -139,8 +139,8 @@ files: | |
| 139 139 | 
             
            - lib/segment/analytics/field_parser.rb
         | 
| 140 140 | 
             
            - lib/segment/analytics/logging.rb
         | 
| 141 141 | 
             
            - lib/segment/analytics/message_batch.rb
         | 
| 142 | 
            -
            - lib/segment/analytics/request.rb
         | 
| 143 142 | 
             
            - lib/segment/analytics/response.rb
         | 
| 143 | 
            +
            - lib/segment/analytics/transport.rb
         | 
| 144 144 | 
             
            - lib/segment/analytics/utils.rb
         | 
| 145 145 | 
             
            - lib/segment/analytics/version.rb
         | 
| 146 146 | 
             
            - lib/segment/analytics/worker.rb
         | 
| @@ -163,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 163 163 | 
             
                - !ruby/object:Gem::Version
         | 
| 164 164 | 
             
                  version: '0'
         | 
| 165 165 | 
             
            requirements: []
         | 
| 166 | 
            -
             | 
| 167 | 
            -
            rubygems_version: 2.7.7
         | 
| 166 | 
            +
            rubygems_version: 3.0.8
         | 
| 168 167 | 
             
            signing_key: 
         | 
| 169 168 | 
             
            specification_version: 4
         | 
| 170 169 | 
             
            summary: Segment.io analytics library
         |