fastly_nsq 0.7.1 → 0.8.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/ChangeLog.md +6 -0
- data/fastly_nsq.gemspec +1 -1
- data/lib/fastly_nsq.rb +1 -1
- data/lib/fastly_nsq/consumer.rb +4 -5
- data/lib/fastly_nsq/fake_backend.rb +2 -2
- data/lib/fastly_nsq/producer.rb +4 -5
- data/lib/fastly_nsq/{ssl_context.rb → tls_options.rb} +17 -9
- data/lib/fastly_nsq/version.rb +1 -1
- data/spec/lib/fastly_nsq/tls_options_spec.rb +119 -0
- metadata +8 -8
- data/spec/lib/fastly_nsq/ssl_context_spec.rb +0 -74
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2f03d7a90d220d61bbbab80806d305f49017361
|
4
|
+
data.tar.gz: fa5f44e2035bd6a9bf655040498bbdeb9b378b37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f34fd7c48a23702fb39115295110d3b1a1aab08f882a514cb83ad9eddcfe7a75e2d67f64a5b6414c543bd557e44c113479d64d45b47e7d010747a8559988169f
|
7
|
+
data.tar.gz: 4a68b4cab8892638444669e2ce3c3780b9df7596a0ebd9753df6f4dd1909a33f7b4ba96c90fc0027de3066da937d9b49486bcc12f43956b476d7c18c7ff3d31c
|
data/ChangeLog.md
CHANGED
data/fastly_nsq.gemspec
CHANGED
@@ -31,5 +31,5 @@ Gem::Specification.new do |gem|
|
|
31
31
|
gem.add_development_dependency 'rubocop', '~> 0.39.0'
|
32
32
|
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
33
33
|
|
34
|
-
gem.add_dependency 'nsq-ruby', '~>
|
34
|
+
gem.add_dependency 'nsq-ruby', '~> 2.0', '>= 2.0.3'
|
35
35
|
end
|
data/lib/fastly_nsq.rb
CHANGED
data/lib/fastly_nsq/consumer.rb
CHANGED
@@ -8,16 +8,16 @@ module FastlyNsq
|
|
8
8
|
def_delegator :connection, :size
|
9
9
|
def_delegator :connection, :terminate
|
10
10
|
|
11
|
-
def initialize(topic:, channel:,
|
11
|
+
def initialize(topic:, channel:, tls_options: nil, connector: nil)
|
12
12
|
@topic = topic
|
13
13
|
@channel = channel
|
14
|
-
@
|
14
|
+
@tls_options = TlsOptions.as_hash(tls_options)
|
15
15
|
@connector = connector
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
19
|
|
20
|
-
attr_reader :channel, :topic, :
|
20
|
+
attr_reader :channel, :topic, :tls_options
|
21
21
|
|
22
22
|
def connection
|
23
23
|
@connection ||= connector.new(params)
|
@@ -32,8 +32,7 @@ module FastlyNsq
|
|
32
32
|
nsqlookupd: ENV.fetch('NSQLOOKUPD_HTTP_ADDRESS').split(',').map(&:strip),
|
33
33
|
topic: topic,
|
34
34
|
channel: channel,
|
35
|
-
|
36
|
-
}
|
35
|
+
}.merge(tls_options)
|
37
36
|
end
|
38
37
|
end
|
39
38
|
end
|
@@ -33,7 +33,7 @@ module FastlyNsq
|
|
33
33
|
end
|
34
34
|
|
35
35
|
class Producer
|
36
|
-
def initialize(topic:, nsqd: nil,
|
36
|
+
def initialize(topic:, nsqd: nil, tls_v1: nil, tls_options: nil)
|
37
37
|
end
|
38
38
|
|
39
39
|
def write(string)
|
@@ -53,7 +53,7 @@ module FastlyNsq
|
|
53
53
|
end
|
54
54
|
|
55
55
|
class Consumer
|
56
|
-
def initialize(nsqlookupd: nil, topic:, channel:,
|
56
|
+
def initialize(nsqlookupd: nil, topic:, channel:, tls_v1: nil, tls_options: nil)
|
57
57
|
end
|
58
58
|
|
59
59
|
def pop(delay = FakeBackend.delay)
|
data/lib/fastly_nsq/producer.rb
CHANGED
@@ -6,15 +6,15 @@ module FastlyNsq
|
|
6
6
|
def_delegator :connection, :terminate
|
7
7
|
def_delegator :connection, :write
|
8
8
|
|
9
|
-
def initialize(topic:,
|
9
|
+
def initialize(topic:, tls_options: nil, connector: nil)
|
10
10
|
@topic = topic
|
11
|
-
@
|
11
|
+
@tls_options = TlsOptions.as_hash(tls_options)
|
12
12
|
@connector = connector
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
attr_reader :topic, :
|
17
|
+
attr_reader :topic, :tls_options
|
18
18
|
|
19
19
|
def connection
|
20
20
|
@connection ||= connector.new(params)
|
@@ -28,8 +28,7 @@ module FastlyNsq
|
|
28
28
|
{
|
29
29
|
nsqd: ENV.fetch('NSQD_TCP_ADDRESS'),
|
30
30
|
topic: topic,
|
31
|
-
|
32
|
-
}
|
31
|
+
}.merge(tls_options)
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -1,15 +1,22 @@
|
|
1
1
|
module FastlyNsq
|
2
|
-
class
|
2
|
+
class TlsOptions
|
3
|
+
def self.as_hash(context = nil)
|
4
|
+
new(context).to_h
|
5
|
+
end
|
6
|
+
|
3
7
|
def initialize(context = nil)
|
4
8
|
@context = context || {}
|
5
9
|
end
|
6
10
|
|
7
11
|
def to_h
|
8
12
|
merge_contexts
|
9
|
-
if
|
10
|
-
|
13
|
+
if @context.empty?
|
14
|
+
{}
|
11
15
|
else
|
12
|
-
|
16
|
+
{
|
17
|
+
tls_v1: true,
|
18
|
+
tls_options: @context,
|
19
|
+
}
|
13
20
|
end
|
14
21
|
end
|
15
22
|
|
@@ -27,20 +34,21 @@ module FastlyNsq
|
|
27
34
|
ENV.fetch('NSQ_SSL_CA_CERTIFICATE', nil)
|
28
35
|
end
|
29
36
|
|
37
|
+
def verify_mode
|
38
|
+
ENV.fetch('NSQ_SSL_VERIFY_MODE', nil)
|
39
|
+
end
|
40
|
+
|
30
41
|
def env_default_hash
|
31
42
|
{
|
32
43
|
key: env_key,
|
33
44
|
certificate: env_certificate,
|
34
45
|
ca_certificate: env_ca_certificate,
|
46
|
+
verify_mode: verify_mode,
|
35
47
|
}
|
36
48
|
end
|
37
49
|
|
38
50
|
def merge_contexts
|
39
|
-
@context = env_default_hash.merge(@context)
|
40
|
-
end
|
41
|
-
|
42
|
-
def empty_context?
|
43
|
-
@context.all? { |_key, value| value.nil? }
|
51
|
+
@context = env_default_hash.merge(@context).delete_if { |_, v| v.nil? }
|
44
52
|
end
|
45
53
|
end
|
46
54
|
end
|
data/lib/fastly_nsq/version.rb
CHANGED
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe FastlyNsq::TlsOptions do
|
4
|
+
describe 'when SSL ENV variables are not set' do
|
5
|
+
describe '.to_h' do
|
6
|
+
it 'returns nil when initialized without parameters' do
|
7
|
+
context = FastlyNsq::TlsOptions.new
|
8
|
+
|
9
|
+
expect(context.to_h).to eq({})
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns an equivalent hash when all variables are defined' do
|
13
|
+
tls_options_hash = {
|
14
|
+
key: 'key',
|
15
|
+
certificate: 'certificate',
|
16
|
+
ca_certificate: 'ca_certificate',
|
17
|
+
}
|
18
|
+
context = FastlyNsq::TlsOptions.new(tls_options_hash)
|
19
|
+
|
20
|
+
expected_output = {
|
21
|
+
tls_v1: true,
|
22
|
+
tls_options: {
|
23
|
+
key: 'key',
|
24
|
+
certificate: 'certificate',
|
25
|
+
ca_certificate: 'ca_certificate',
|
26
|
+
},
|
27
|
+
}
|
28
|
+
expect(context.to_h).to eq(expected_output)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not add keys with nil values' do
|
32
|
+
tls_options_hash = {
|
33
|
+
key: 'key',
|
34
|
+
certificate: 'certificate',
|
35
|
+
}
|
36
|
+
context = FastlyNsq::TlsOptions.new(tls_options_hash)
|
37
|
+
ca_certificate = context.to_h[:ca_certificate]
|
38
|
+
|
39
|
+
expect(ca_certificate).to be_nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'when SSL ENV variables are set' do
|
45
|
+
before do
|
46
|
+
ENV['NSQ_SSL_KEY'] = '/some/key'
|
47
|
+
ENV['NSQ_SSL_CERTIFICATE'] = '/some/certificate'
|
48
|
+
ENV['NSQ_SSL_CA_CERTIFICATE'] = '/some/ca_certificate'
|
49
|
+
ENV['NSQ_SSL_VERIFY_MODE'] = 'value'
|
50
|
+
end
|
51
|
+
|
52
|
+
after do
|
53
|
+
ENV['NSQ_SSL_KEY'] = nil
|
54
|
+
ENV['NSQ_SSL_CERTIFICATE'] = nil
|
55
|
+
ENV['NSQ_SSL_CA_CERTIFICATE'] = nil
|
56
|
+
ENV['NSQ_SSL_VERIFY_MODE'] = nil
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '.to_h' do
|
60
|
+
it 'returns a hash of the env variables when no parameters are passed' do
|
61
|
+
expected_hash = {
|
62
|
+
tls_v1: true,
|
63
|
+
tls_options: {
|
64
|
+
key: ENV['NSQ_SSL_KEY'],
|
65
|
+
certificate: ENV['NSQ_SSL_CERTIFICATE'],
|
66
|
+
ca_certificate: ENV['NSQ_SSL_CA_CERTIFICATE'],
|
67
|
+
verify_mode: ENV['NSQ_SSL_VERIFY_MODE'],
|
68
|
+
},
|
69
|
+
}
|
70
|
+
context = FastlyNsq::TlsOptions.new
|
71
|
+
|
72
|
+
expect(context.to_h).to eq(expected_hash)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'merges passed parameters and env variables' do
|
76
|
+
passed_certificate = '/passed/certificate'
|
77
|
+
expected_hash = {
|
78
|
+
tls_v1: true,
|
79
|
+
tls_options: {
|
80
|
+
key: ENV['NSQ_SSL_KEY'],
|
81
|
+
certificate: passed_certificate,
|
82
|
+
ca_certificate: ENV['NSQ_SSL_CA_CERTIFICATE'],
|
83
|
+
verify_mode: ENV['NSQ_SSL_VERIFY_MODE'],
|
84
|
+
},
|
85
|
+
}
|
86
|
+
context = FastlyNsq::TlsOptions.new(certificate: passed_certificate)
|
87
|
+
|
88
|
+
expect(context.to_h).to eq(expected_hash)
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'removes keys that are nil' do
|
92
|
+
expected_hash = {
|
93
|
+
tls_v1: true,
|
94
|
+
tls_options: {
|
95
|
+
ca_certificate: ENV['NSQ_SSL_CA_CERTIFICATE'],
|
96
|
+
verify_mode: ENV['NSQ_SSL_VERIFY_MODE'],
|
97
|
+
},
|
98
|
+
}
|
99
|
+
context = FastlyNsq::TlsOptions.new(key: nil, certificate: nil)
|
100
|
+
|
101
|
+
expect(context.to_h).to eq(expected_hash)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe 'as_hash' do
|
107
|
+
it 'returns an tls_options hash' do
|
108
|
+
expected_hash = {
|
109
|
+
tls_v1: true,
|
110
|
+
tls_options: {
|
111
|
+
key: 'joe',
|
112
|
+
certificate: 'biden',
|
113
|
+
},
|
114
|
+
}
|
115
|
+
output_hash = FastlyNsq::TlsOptions.as_hash(key: 'joe', certificate: 'biden')
|
116
|
+
expect(output_hash).to eq(expected_hash)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastly_nsq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tommy O'Neil
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: awesome_print
|
@@ -157,20 +157,20 @@ dependencies:
|
|
157
157
|
requirements:
|
158
158
|
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
160
|
+
version: '2.0'
|
161
161
|
- - ">="
|
162
162
|
- !ruby/object:Gem::Version
|
163
|
-
version:
|
163
|
+
version: 2.0.3
|
164
164
|
type: :runtime
|
165
165
|
prerelease: false
|
166
166
|
version_requirements: !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
168
|
- - "~>"
|
169
169
|
- !ruby/object:Gem::Version
|
170
|
-
version:
|
170
|
+
version: '2.0'
|
171
171
|
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
173
|
+
version: 2.0.3
|
174
174
|
description: Helper classes for Fastly's NSQ Services
|
175
175
|
email: tommy@fastly.com
|
176
176
|
executables: []
|
@@ -201,8 +201,8 @@ files:
|
|
201
201
|
- lib/fastly_nsq/message.rb
|
202
202
|
- lib/fastly_nsq/producer.rb
|
203
203
|
- lib/fastly_nsq/rake_task.rb
|
204
|
-
- lib/fastly_nsq/ssl_context.rb
|
205
204
|
- lib/fastly_nsq/strategy.rb
|
205
|
+
- lib/fastly_nsq/tls_options.rb
|
206
206
|
- lib/fastly_nsq/version.rb
|
207
207
|
- spec/lib/fastly_nsq/consumer_spec.rb
|
208
208
|
- spec/lib/fastly_nsq/fake_backend_spec.rb
|
@@ -211,8 +211,8 @@ files:
|
|
211
211
|
- spec/lib/fastly_nsq/message_spec.rb
|
212
212
|
- spec/lib/fastly_nsq/producer_spec.rb
|
213
213
|
- spec/lib/fastly_nsq/rake_task_spec.rb
|
214
|
-
- spec/lib/fastly_nsq/ssl_context_spec.rb
|
215
214
|
- spec/lib/fastly_nsq/strategy_spec.rb
|
215
|
+
- spec/lib/fastly_nsq/tls_options_spec.rb
|
216
216
|
- spec/lib/fastly_nsq_spec.rb
|
217
217
|
- spec/spec_helper.rb
|
218
218
|
- spec/support/env_helpers.rb
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe FastlyNsq::SSLContext do
|
4
|
-
describe 'when SSL ENV variables are not set' do
|
5
|
-
describe '.to_h' do
|
6
|
-
it 'returns nil when initialized without parameters' do
|
7
|
-
context = FastlyNsq::SSLContext.new
|
8
|
-
|
9
|
-
expect(context.to_h).to be_nil
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'returns an equivalent hash when all variables are defined' do
|
13
|
-
ssl_context_hash = {
|
14
|
-
key: 'key',
|
15
|
-
certificate: 'certificate',
|
16
|
-
ca_certificate: 'ca_certificate',
|
17
|
-
}
|
18
|
-
context = FastlyNsq::SSLContext.new(ssl_context_hash)
|
19
|
-
|
20
|
-
expect(context.to_h).to eq(ssl_context_hash)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'does not add keys with nil values' do
|
24
|
-
ssl_context_hash = {
|
25
|
-
key: 'key',
|
26
|
-
certificate: 'certificate',
|
27
|
-
}
|
28
|
-
context = FastlyNsq::SSLContext.new(ssl_context_hash)
|
29
|
-
ca_certificate = context.to_h[:ca_certificate]
|
30
|
-
|
31
|
-
expect(ca_certificate).to be_nil
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'when SSL ENV variables are set' do
|
37
|
-
before do
|
38
|
-
ENV['NSQ_SSL_KEY'] = '/some/key'
|
39
|
-
ENV['NSQ_SSL_CERTIFICATE'] = '/some/certificate'
|
40
|
-
ENV['NSQ_SSL_CA_CERTIFICATE'] = '/some/ca_certificate'
|
41
|
-
end
|
42
|
-
|
43
|
-
after do
|
44
|
-
ENV['NSQ_SSL_KEY'] = nil
|
45
|
-
ENV['NSQ_SSL_CERTIFICATE'] = nil
|
46
|
-
ENV['NSQ_SSL_CA_CERTIFICATE'] = nil
|
47
|
-
end
|
48
|
-
|
49
|
-
describe '.to_h' do
|
50
|
-
it 'returns a hash of the env variables when no parameters are passed' do
|
51
|
-
expected_hash = {
|
52
|
-
key: ENV['NSQ_SSL_KEY'],
|
53
|
-
certificate: ENV['NSQ_SSL_CERTIFICATE'],
|
54
|
-
ca_certificate: ENV['NSQ_SSL_CA_CERTIFICATE'],
|
55
|
-
}
|
56
|
-
context = FastlyNsq::SSLContext.new
|
57
|
-
|
58
|
-
expect(context.to_h).to eq(expected_hash)
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'merges passed parameters and env variables' do
|
62
|
-
passed_certificate = '/passed/certificate'
|
63
|
-
expected_hash = {
|
64
|
-
key: ENV['NSQ_SSL_KEY'],
|
65
|
-
certificate: passed_certificate,
|
66
|
-
ca_certificate: ENV['NSQ_SSL_CA_CERTIFICATE'],
|
67
|
-
}
|
68
|
-
context = FastlyNsq::SSLContext.new(certificate: passed_certificate)
|
69
|
-
|
70
|
-
expect(context.to_h).to eq(expected_hash)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|