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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17b61bb188d391c3349423f42c56444313a7ed154945149ecda2d1317d070a15
4
- data.tar.gz: 499d33dbd054da57d6bf33bf277638a93d238dee88d7d1989626ce96f35dcbef
3
+ metadata.gz: 4ecb763039e2fdacb85b464ebd96a7b46b4b18a92fb1a41069aff09af3c8fa92
4
+ data.tar.gz: e8bd47c02313e50940a2b3c042533b324ce4cba322572ade72562c6c39eec119
5
5
  SHA512:
6
- metadata.gz: 209c042c0b36bbe411cbb76e57ae072c6cde1de5906dff3bdcff597dd83148f92154d052acec4225b23e1c40c64f5be3129d4a21db62aff1709520725e45edc6
7
- data.tar.gz: 120b864ff8d2ba8a68082a6b8d4bcc68f75cd490ae083f463ef2e8bc0c02efc52f4f926642a1cf5cc0067db7ba885220ab7e7a66c578daff5a9499385fa81826
6
+ metadata.gz: 5f0097b62f7bcfdcd6ca0f7caa16dc29505b1fd6a896dac9178d481201d6aaabd1aa456760baef7dbb95de34f956374df643351b0769626566cb6cb2ae89e6cc
7
+ data.tar.gz: 571840b8b57c64ac39d574b92e90db37290eb48e9f756c594c109f1948b27246503ceca31f00151f0802f4e67801dfcbb138f5311c6d105852e84636bd0710b1
@@ -10,13 +10,13 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  matrix:
13
- ruby-version: [2.6, 2.7, 3.0]
13
+ ruby: ['3.1', '3.0', '2.7']
14
14
  steps:
15
- - uses: actions/checkout@v2
16
- - name: Set up Ruby ${{ matrix.ruby-version }}
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-version }}
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.3.0...HEAD
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
- attr_reader :write_key, :on_error, :stub, :logger, :http_options
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(BASE_URL)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleSegment
4
- VERSION = '1.3.0'
4
+ VERSION = '1.4.0'
5
5
  end
@@ -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.8.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.3.0
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: 2021-11-26 00:00:00.000000000 Z
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.8.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.8.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: []