simple_segment 0.3.0 → 1.0.0.pre
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 +5 -5
- data/.hound.yml +2 -1
- data/.rubocop.yml +2 -0
- data/.travis.yml +3 -4
- data/Gemfile +2 -0
- data/README.md +16 -0
- data/Rakefile +2 -0
- data/bin/console +1 -0
- data/lib/simple_segment.rb +2 -0
- data/lib/simple_segment/batch.rb +2 -0
- data/lib/simple_segment/client.rb +2 -0
- data/lib/simple_segment/configuration.rb +5 -1
- data/lib/simple_segment/logging.rb +3 -5
- data/lib/simple_segment/operations.rb +2 -0
- data/lib/simple_segment/operations/alias.rb +2 -0
- data/lib/simple_segment/operations/group.rb +2 -0
- data/lib/simple_segment/operations/identify.rb +2 -0
- data/lib/simple_segment/operations/operation.rb +6 -3
- data/lib/simple_segment/operations/page.rb +2 -0
- data/lib/simple_segment/operations/track.rb +2 -0
- data/lib/simple_segment/request.rb +7 -4
- data/lib/simple_segment/utils.rb +2 -0
- data/lib/simple_segment/version.rb +3 -1
- data/simple_segment.gemspec +6 -5
- metadata +27 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 27c373f624b3e1192b8ebb92fbd5ead37924a4578e5179dd831c9226e4f57583
|
4
|
+
data.tar.gz: b2537161f1f05a92ed3c39c47d65c62cb535217ebedc3d1201ed75a8aa928e56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b53313b90d9db6a87799b57f4cfee2fba4fb645e9b2b1aea3db19e996795266d6a558f14802c9bf86a6f13fa2655f0b9760267bab4189736746bd2684e93ed10
|
7
|
+
data.tar.gz: e2b9c0b2d5bde7ff41de7e78af42b9c50621f0c095c9d8563cabfba3f0d5bf703c80e46b6fae3101cb4f686ebaa58c82ab77149792c3f87408df5b3d267c88db
|
data/.hound.yml
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -95,6 +95,22 @@ analytics = SimpleSegment::Client.new(
|
|
95
95
|
)
|
96
96
|
```
|
97
97
|
|
98
|
+
### Set HTTP Options
|
99
|
+
|
100
|
+
You can set options that are passed to `Net::HTTP.start`.
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
analytics = SimpleSegment::Client.new(
|
104
|
+
write_key: 'YOUR_WRITE_KEY',
|
105
|
+
http_options: {
|
106
|
+
open_timeout: 42,
|
107
|
+
read_timeout: 42,
|
108
|
+
close_on_empty_response: true,
|
109
|
+
# ...
|
110
|
+
}
|
111
|
+
)
|
112
|
+
```
|
113
|
+
|
98
114
|
## Development
|
99
115
|
|
100
116
|
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.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/lib/simple_segment.rb
CHANGED
data/lib/simple_segment/batch.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'simple_segment/logging'
|
2
4
|
|
3
5
|
module SimpleSegment
|
@@ -5,7 +7,7 @@ module SimpleSegment
|
|
5
7
|
include SimpleSegment::Utils
|
6
8
|
include SimpleSegment::Logging
|
7
9
|
|
8
|
-
attr_reader :write_key, :on_error, :stub, :logger
|
10
|
+
attr_reader :write_key, :on_error, :stub, :logger, :http_options
|
9
11
|
|
10
12
|
def initialize(settings = {})
|
11
13
|
symbolized_settings = symbolize_keys(settings)
|
@@ -13,6 +15,8 @@ module SimpleSegment
|
|
13
15
|
@on_error = symbolized_settings[:on_error] || proc {}
|
14
16
|
@stub = symbolized_settings[:stub]
|
15
17
|
@logger = default_logger(symbolized_settings[:logger])
|
18
|
+
@http_options = { use_ssl: true }
|
19
|
+
.merge(symbolized_settings[:http_options] || {})
|
16
20
|
raise ArgumentError, 'Missing required option :write_key' \
|
17
21
|
unless @write_key
|
18
22
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'logger'
|
2
4
|
module SimpleSegment
|
3
5
|
module Logging
|
@@ -6,11 +8,7 @@ module SimpleSegment
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def default_logger(logger_option)
|
9
|
-
|
10
|
-
logger_option
|
11
|
-
else
|
12
|
-
Logger.new STDOUT
|
13
|
-
end
|
11
|
+
logger_option || Logger.new(STDOUT)
|
14
12
|
end
|
15
13
|
end
|
16
14
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SimpleSegment
|
2
4
|
module Operations
|
3
5
|
class Operation
|
@@ -10,10 +12,9 @@ module SimpleSegment
|
|
10
12
|
}
|
11
13
|
}.freeze
|
12
14
|
|
13
|
-
attr_reader :options, :request
|
14
|
-
|
15
15
|
def initialize(client, options = {})
|
16
16
|
@options = options
|
17
|
+
@context = DEFAULT_CONTEXT.merge(options[:context].to_h)
|
17
18
|
@request = Request.new(client)
|
18
19
|
end
|
19
20
|
|
@@ -23,6 +24,8 @@ module SimpleSegment
|
|
23
24
|
|
24
25
|
private
|
25
26
|
|
27
|
+
attr_reader :options, :request, :context
|
28
|
+
|
26
29
|
def base_payload
|
27
30
|
check_identity!
|
28
31
|
current_time = Time.now
|
@@ -30,7 +33,7 @@ module SimpleSegment
|
|
30
33
|
{
|
31
34
|
userId: options[:user_id],
|
32
35
|
anonymousId: options[:anonymous_id],
|
33
|
-
context:
|
36
|
+
context: context,
|
34
37
|
integrations: options[:integrations],
|
35
38
|
timestamp: timestamp(options.fetch(:timestamp, current_time)),
|
36
39
|
sentAt: current_time.iso8601
|
@@ -1,21 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SimpleSegment
|
2
4
|
class Request
|
3
|
-
BASE_URL = 'https://api.segment.io'
|
5
|
+
BASE_URL = 'https://api.segment.io'
|
4
6
|
DEFAULT_HEADERS = {
|
5
7
|
'Content-Type' => 'application/json',
|
6
8
|
'accept' => 'application/json'
|
7
9
|
}.freeze
|
8
10
|
|
9
|
-
attr_reader :write_key, :error_handler, :stub, :logger
|
11
|
+
attr_reader :write_key, :error_handler, :stub, :logger, :http_options
|
10
12
|
|
11
13
|
def initialize(client)
|
12
14
|
@write_key = client.config.write_key
|
13
15
|
@error_handler = client.config.on_error
|
14
16
|
@stub = client.config.stub
|
15
17
|
@logger = client.config.logger
|
18
|
+
@http_options = client.config.http_options
|
16
19
|
end
|
17
20
|
|
18
|
-
def post(path, payload, headers: DEFAULT_HEADERS)
|
21
|
+
def post(path, payload, headers: DEFAULT_HEADERS) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
19
22
|
response = nil
|
20
23
|
status_code = nil
|
21
24
|
response_body = nil
|
@@ -29,7 +32,7 @@ module SimpleSegment
|
|
29
32
|
|
30
33
|
{ status: 200, error: nil }
|
31
34
|
else
|
32
|
-
Net::HTTP.start(uri.host, uri.port,
|
35
|
+
Net::HTTP.start(uri.host, uri.port, http_options) do |http|
|
33
36
|
request = Net::HTTP::Post.new(path, headers)
|
34
37
|
request.basic_auth write_key, nil
|
35
38
|
http.request(request, payload).tap do |res|
|
data/lib/simple_segment/utils.rb
CHANGED
data/simple_segment.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'simple_segment/version'
|
5
6
|
|
@@ -20,10 +21,10 @@ Gem::Specification.new do |spec|
|
|
20
21
|
spec.require_paths = ['lib']
|
21
22
|
|
22
23
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
24
|
+
spec.add_development_dependency 'pry'
|
23
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
24
26
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
25
|
-
spec.add_development_dependency '
|
27
|
+
spec.add_development_dependency 'rubocop', '0.75.0'
|
26
28
|
spec.add_development_dependency 'timecop', '~> 0.8.0'
|
27
|
-
spec.add_development_dependency '
|
28
|
-
spec.add_development_dependency 'pry'
|
29
|
+
spec.add_development_dependency 'webmock', '~> 3.7'
|
29
30
|
end
|
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: 0.
|
4
|
+
version: 1.0.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikhail Topolskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,19 +67,19 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: rubocop
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - '='
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: 0.75.0
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - '='
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 0.75.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: timecop
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,33 +95,19 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 0.8.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: webmock
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: '3.7'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
110
|
+
version: '3.7'
|
111
111
|
description: SimpleSegment allows for manual control of when and how the events are
|
112
112
|
sent to Segment.
|
113
113
|
email:
|
@@ -159,12 +159,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
159
|
version: '0'
|
160
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
|
-
- - "
|
162
|
+
- - ">"
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version:
|
164
|
+
version: 1.3.1
|
165
165
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.6.14
|
166
|
+
rubygems_version: 3.0.3
|
168
167
|
signing_key:
|
169
168
|
specification_version: 4
|
170
169
|
summary: A simple synchronous API client for segment.io.
|