simple_segment 1.3.0 → 1.4.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 +4 -4
- data/.github/workflows/ci.yml +4 -4
- data/CHANGELOG.md +10 -4
- data/README.md +11 -0
- data/lib/simple_segment/configuration.rb +4 -1
- data/lib/simple_segment/request.rb +5 -5
- data/lib/simple_segment/version.rb +1 -1
- data/simple_segment.gemspec +1 -1
- metadata +7 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4ecb763039e2fdacb85b464ebd96a7b46b4b18a92fb1a41069aff09af3c8fa92
         | 
| 4 | 
            +
              data.tar.gz: e8bd47c02313e50940a2b3c042533b324ce4cba322572ade72562c6c39eec119
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 5f0097b62f7bcfdcd6ca0f7caa16dc29505b1fd6a896dac9178d481201d6aaabd1aa456760baef7dbb95de34f956374df643351b0769626566cb6cb2ae89e6cc
         | 
| 7 | 
            +
              data.tar.gz: 571840b8b57c64ac39d574b92e90db37290eb48e9f756c594c109f1948b27246503ceca31f00151f0802f4e67801dfcbb138f5311c6d105852e84636bd0710b1
         | 
    
        data/.github/workflows/ci.yml
    CHANGED
    
    | @@ -10,13 +10,13 @@ jobs: | |
| 10 10 | 
             
                runs-on: ubuntu-latest
         | 
| 11 11 | 
             
                strategy:
         | 
| 12 12 | 
             
                  matrix:
         | 
| 13 | 
            -
                    ruby | 
| 13 | 
            +
                    ruby: ['3.1', '3.0', '2.7']
         | 
| 14 14 | 
             
                steps:
         | 
| 15 | 
            -
                  - uses: actions/checkout@ | 
| 16 | 
            -
                  - name: Set up Ruby ${{ matrix.ruby | 
| 15 | 
            +
                  - uses: actions/checkout@v3
         | 
| 16 | 
            +
                  - name: Set up Ruby ${{ matrix.ruby }}
         | 
| 17 17 | 
             
                    uses: ruby/setup-ruby@v1
         | 
| 18 18 | 
             
                    with:
         | 
| 19 | 
            -
                      ruby-version: ${{ matrix.ruby | 
| 19 | 
            +
                      ruby-version: ${{ matrix.ruby }}
         | 
| 20 20 | 
             
                      bundler-cache: true
         | 
| 21 21 | 
             
                  - name: Run tests
         | 
| 22 22 | 
             
                    run: bundle exec rake
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -6,10 +6,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. | |
| 6 6 |  | 
| 7 7 | 
             
            ## [Unreleased]
         | 
| 8 8 |  | 
| 9 | 
            +
            ## [1.4.0] - 2022-08-31
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ### Added
         | 
| 12 | 
            +
            - Add host option to support regional segments https://github.com/whatthewhat/simple_segment/pull/37 by [@larsklevan](https://github.com/larsklevan)
         | 
| 13 | 
            +
             | 
| 9 14 | 
             
            ## [1.3.0] - 2021-11-27
         | 
| 10 15 |  | 
| 11 16 | 
             
            ### Added
         | 
| 12 | 
            -
            - Add support for message_id override https://github.com/whatthewhat/simple_segment/pull/34 by [@theblang] | 
| 17 | 
            +
            - Add support for message_id override https://github.com/whatthewhat/simple_segment/pull/34 by [@theblang](https://github.com/theblang)
         | 
| 13 18 |  | 
| 14 19 | 
             
            ## [1.2.0] - 2020-07-29
         | 
| 15 20 |  | 
| @@ -19,13 +24,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. | |
| 19 24 | 
             
            ## [1.1.0] - 2020-04-11
         | 
| 20 25 |  | 
| 21 26 | 
             
            ### Added
         | 
| 22 | 
            -
            - Added support for http_proxy and https_proxy environment variables https://github.com/whatthewhat/simple_segment/pull/26 by [@saks] | 
| 27 | 
            +
            - Added support for http_proxy and https_proxy environment variables https://github.com/whatthewhat/simple_segment/pull/26 by [@saks](https://github.com/saks)
         | 
| 23 28 | 
             
            - Added Ruby 2.7 to travis.yml
         | 
| 24 29 |  | 
| 25 30 | 
             
            ## [1.0.0] - 2019-12-12
         | 
| 26 31 |  | 
| 27 32 | 
             
            ### Added
         | 
| 28 | 
            -
            - Allow passing custom Net::HTTP options (e.g. timeout) https://github.com/whatthewhat/simple_segment/pull/23 by [@barodeur] | 
| 33 | 
            +
            - Allow passing custom Net::HTTP options (e.g. timeout) https://github.com/whatthewhat/simple_segment/pull/23 by [@barodeur](https://github.com/barodeur)
         | 
| 29 34 |  | 
| 30 35 | 
             
            ### Changed
         | 
| 31 36 | 
             
            - The gem is no longer tested with Ruby versions below 2.4
         | 
| @@ -35,7 +40,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. | |
| 35 40 | 
             
            ### Changed
         | 
| 36 41 | 
             
            - Date properties are now automatically converted to ISO 8601 to be consistent with the official client https://github.com/whatthewhat/simple_segment/pull/19 by @juanramoncg
         | 
| 37 42 |  | 
| 38 | 
            -
            [Unreleased]: https://github.com/whatthewhat/simple_segment/compare/v1. | 
| 43 | 
            +
            [Unreleased]: https://github.com/whatthewhat/simple_segment/compare/v1.4.0...HEAD
         | 
| 44 | 
            +
            [1.4.0]: https://github.com/whatthewhat/simple_segment/compare/v1.3.0...v1.4.0
         | 
| 39 45 | 
             
            [1.3.0]: https://github.com/whatthewhat/simple_segment/compare/v1.2.0...v1.3.0
         | 
| 40 46 | 
             
            [1.2.0]: https://github.com/whatthewhat/simple_segment/compare/v1.1.0...v1.2.0
         | 
| 41 47 | 
             
            [1.1.0]: https://github.com/whatthewhat/simple_segment/compare/v1.0.0...v1.1.0
         | 
    
        data/README.md
    CHANGED
    
    | @@ -110,6 +110,17 @@ analytics = SimpleSegment::Client.new( | |
| 110 110 | 
             
            )
         | 
| 111 111 | 
             
            ```
         | 
| 112 112 |  | 
| 113 | 
            +
            ### Configurable Host
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            You can use [regional segments](https://segment.com/docs/guides/regional-segment/) and send data to the desired region by setting the `host` parameter.
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            ```ruby
         | 
| 118 | 
            +
            analytics = SimpleSegment::Client.new(
         | 
| 119 | 
            +
              write_key: 'YOUR_WRITE_KEY',
         | 
| 120 | 
            +
              host: 'events.eu1.segmentapis.com'
         | 
| 121 | 
            +
            )
         | 
| 122 | 
            +
            ```
         | 
| 123 | 
            +
             | 
| 113 124 | 
             
            ## Development
         | 
| 114 125 |  | 
| 115 126 | 
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
| @@ -7,7 +7,9 @@ module SimpleSegment | |
| 7 7 | 
             
                include SimpleSegment::Utils
         | 
| 8 8 | 
             
                include SimpleSegment::Logging
         | 
| 9 9 |  | 
| 10 | 
            -
                 | 
| 10 | 
            +
                DEFAULT_HOST = 'api.segment.io'
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                attr_reader :write_key, :on_error, :stub, :logger, :http_options, :host
         | 
| 11 13 |  | 
| 12 14 | 
             
                def initialize(settings = {})
         | 
| 13 15 | 
             
                  symbolized_settings = symbolize_keys(settings)
         | 
| @@ -17,6 +19,7 @@ module SimpleSegment | |
| 17 19 | 
             
                  @logger = default_logger(symbolized_settings[:logger])
         | 
| 18 20 | 
             
                  @http_options = { use_ssl: true }
         | 
| 19 21 | 
             
                                  .merge(symbolized_settings[:http_options] || {})
         | 
| 22 | 
            +
                  @host = symbolized_settings[:host] || DEFAULT_HOST
         | 
| 20 23 | 
             
                  raise ArgumentError, 'Missing required option :write_key' \
         | 
| 21 24 | 
             
                    unless @write_key
         | 
| 22 25 | 
             
                end
         | 
| @@ -2,13 +2,12 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module SimpleSegment
         | 
| 4 4 | 
             
              class Request
         | 
| 5 | 
            -
                BASE_URL = 'https://api.segment.io'
         | 
| 6 5 | 
             
                DEFAULT_HEADERS = {
         | 
| 7 6 | 
             
                  'Content-Type' => 'application/json',
         | 
| 8 7 | 
             
                  'accept' => 'application/json'
         | 
| 9 8 | 
             
                }.freeze
         | 
| 10 9 |  | 
| 11 | 
            -
                attr_reader :write_key, :error_handler, :stub, :logger, :http_options
         | 
| 10 | 
            +
                attr_reader :write_key, :error_handler, :stub, :logger, :http_options, :host
         | 
| 12 11 |  | 
| 13 12 | 
             
                def initialize(client)
         | 
| 14 13 | 
             
                  @write_key = client.config.write_key
         | 
| @@ -16,6 +15,7 @@ module SimpleSegment | |
| 16 15 | 
             
                  @stub = client.config.stub
         | 
| 17 16 | 
             
                  @logger = client.config.logger
         | 
| 18 17 | 
             
                  @http_options = client.config.http_options
         | 
| 18 | 
            +
                  @host = client.config.host
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
| 21 21 | 
             
                def post(path, payload, headers: DEFAULT_HEADERS) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
         | 
| @@ -23,17 +23,17 @@ module SimpleSegment | |
| 23 23 | 
             
                  status_code = nil
         | 
| 24 24 | 
             
                  response_body = nil
         | 
| 25 25 |  | 
| 26 | 
            -
                  uri = URI( | 
| 26 | 
            +
                  uri = URI("https://#{host}#{path}")
         | 
| 27 27 | 
             
                  payload = JSON.generate(payload)
         | 
| 28 28 | 
             
                  if stub
         | 
| 29 29 | 
             
                    logger.debug "stubbed request to \
         | 
| 30 | 
            -
                    #{path}: write key = #{write_key}, \
         | 
| 30 | 
            +
                    #{uri.path}: write key = #{write_key}, \
         | 
| 31 31 | 
             
                    payload = #{payload}"
         | 
| 32 32 |  | 
| 33 33 | 
             
                    { status: 200, error: nil }
         | 
| 34 34 | 
             
                  else
         | 
| 35 35 | 
             
                    Net::HTTP.start(uri.host, uri.port, :ENV, http_options) do |http|
         | 
| 36 | 
            -
                      request = Net::HTTP::Post.new(path, headers)
         | 
| 36 | 
            +
                      request = Net::HTTP::Post.new(uri.path, headers)
         | 
| 37 37 | 
             
                      request.basic_auth write_key, nil
         | 
| 38 38 | 
             
                      http.request(request, payload).tap do |res|
         | 
| 39 39 | 
             
                        status_code = res.code
         | 
    
        data/simple_segment.gemspec
    CHANGED
    
    | @@ -25,7 +25,7 @@ Gem::Specification.new do |spec| | |
| 25 25 | 
             
              spec.add_development_dependency 'rake', '>= 10.0'
         | 
| 26 26 | 
             
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 27 27 | 
             
              spec.add_development_dependency 'rubocop', '1.23.0'
         | 
| 28 | 
            -
              spec.add_development_dependency 'timecop', '~> 0. | 
| 28 | 
            +
              spec.add_development_dependency 'timecop', '~> 0.9.5'
         | 
| 29 29 | 
             
              spec.add_development_dependency 'webmock', '~> 3.7'
         | 
| 30 30 | 
             
              spec.metadata = {
         | 
| 31 31 | 
             
                'rubygems_mfa_required' => 'true'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: simple_segment
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Mikhail Topolskiy
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-08-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -86,14 +86,14 @@ dependencies: | |
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - "~>"
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: 0. | 
| 89 | 
            +
                    version: 0.9.5
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 94 | 
             
                - - "~>"
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: 0. | 
| 96 | 
            +
                    version: 0.9.5
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 98 | 
             
              name: webmock
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -149,7 +149,7 @@ licenses: | |
| 149 149 | 
             
            - MIT
         | 
| 150 150 | 
             
            metadata:
         | 
| 151 151 | 
             
              rubygems_mfa_required: 'true'
         | 
| 152 | 
            -
            post_install_message: | 
| 152 | 
            +
            post_install_message:
         | 
| 153 153 | 
             
            rdoc_options: []
         | 
| 154 154 | 
             
            require_paths:
         | 
| 155 155 | 
             
            - lib
         | 
| @@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 165 165 | 
             
                  version: '0'
         | 
| 166 166 | 
             
            requirements: []
         | 
| 167 167 | 
             
            rubygems_version: 3.1.6
         | 
| 168 | 
            -
            signing_key: | 
| 168 | 
            +
            signing_key:
         | 
| 169 169 | 
             
            specification_version: 4
         | 
| 170 170 | 
             
            summary: A simple synchronous API client for segment.io.
         | 
| 171 171 | 
             
            test_files: []
         |