krakow 0.3.4 → 0.3.6
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 +7 -0
- data/CHANGELOG.md +6 -0
- data/README.md +5 -0
- data/krakow.gemspec +0 -1
- data/lib/krakow/command/auth.rb +36 -0
- data/lib/krakow/connection.rb +19 -3
- data/lib/krakow/connection_features/snappy_frames.rb +6 -1
- data/lib/krakow/consumer.rb +1 -1
- data/lib/krakow/producer.rb +12 -7
- data/lib/krakow/version.rb +1 -4
- metadata +43 -68
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6c4b142c9d4c137f48a3f4c863185346d6111e37
|
4
|
+
data.tar.gz: 56732c8b17e13d4e9d0b77880ac6658642e8cac6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c8eff9207bbb250463f617befeb032f3a609744d0341f44d797dae80d0eb934ee27a630e7472d0ac6c08ed41b5c5c8cad5fc832dae26cd932a9d0e80909b1bd0
|
7
|
+
data.tar.gz: 8cb47618a5ba19cf26b3194c9a983f7b4e399ea387d8fd0258b0eb2361f39313c1b8e04c10c14d412ac9c32e310d53bd7d5051a3f7741b16fa8187f915399e96
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v0.3.6
|
2
|
+
* Allow `:options` key within `Producer` to set low level connection settings
|
3
|
+
* Make snappy an optional dependency
|
4
|
+
* Add initial support for authentication
|
5
|
+
* Update allowed types for optional notifier
|
6
|
+
|
1
7
|
## v0.3.4
|
2
8
|
* Explicitly require version file (#11 and #12)
|
3
9
|
|
data/README.md
CHANGED
@@ -159,6 +159,11 @@ consumer = Krakow::Consumer.new(
|
|
159
159
|
)
|
160
160
|
```
|
161
161
|
|
162
|
+
*NOTE*: snappy support requires the snappy
|
163
|
+
gem and is not provided by default, so you
|
164
|
+
will need to ensure it is installed either
|
165
|
+
on the system, or within the bundle.
|
166
|
+
|
162
167
|
### I need Deflate compression!
|
163
168
|
|
164
169
|
OK!
|
data/krakow.gemspec
CHANGED
@@ -13,7 +13,6 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.add_dependency 'celluloid-io'
|
14
14
|
s.add_dependency 'http'
|
15
15
|
s.add_dependency 'multi_json'
|
16
|
-
s.add_dependency 'snappy'
|
17
16
|
s.add_dependency 'digest-crc'
|
18
17
|
s.files = Dir['lib/**/*'] + %w(krakow.gemspec README.md CHANGELOG.md CONTRIBUTING.md LICENSE)
|
19
18
|
s.extra_rdoc_files = %w(CHANGELOG.md CONTRIBUTING.md LICENSE)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'krakow'
|
2
|
+
|
3
|
+
module Krakow
|
4
|
+
class Command
|
5
|
+
# Publish single message
|
6
|
+
class Auth < Command
|
7
|
+
|
8
|
+
# @!group Attributes
|
9
|
+
|
10
|
+
# @!macro [attach] attribute
|
11
|
+
# @!method $1
|
12
|
+
# @return [$2] the $1 $0
|
13
|
+
# @!method $1?
|
14
|
+
# @return [TrueClass, FalseClass] truthiness of the $1 $0
|
15
|
+
attribute :secret, String, :required => true
|
16
|
+
|
17
|
+
# @!endgroup
|
18
|
+
|
19
|
+
def to_line
|
20
|
+
scrt = secret.to_s
|
21
|
+
[name, "\n", scrt.length, scrt].pack('a*a*a*a*l>a*')
|
22
|
+
end
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def ok
|
26
|
+
%w(OK)
|
27
|
+
end
|
28
|
+
|
29
|
+
def error
|
30
|
+
%w(E_AUTH_FAILED E_UNAUTHORIZED)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/krakow/connection.rb
CHANGED
@@ -33,14 +33,15 @@ module Krakow
|
|
33
33
|
:deflate_level,
|
34
34
|
:max_deflate_level,
|
35
35
|
:snappy,
|
36
|
-
:sample_rate
|
36
|
+
:sample_rate,
|
37
|
+
:auth_required
|
37
38
|
]
|
38
39
|
|
39
40
|
# List of features that may not be enabled together
|
40
41
|
EXCLUSIVE_FEATURES = [[:snappy, :deflate]]
|
41
42
|
|
42
43
|
# List of features that may be enabled by the client
|
43
|
-
ENABLEABLE_FEATURES = [:tls_v1, :snappy, :deflate]
|
44
|
+
ENABLEABLE_FEATURES = [:tls_v1, :snappy, :deflate, :auth_required]
|
44
45
|
|
45
46
|
finalizer :goodbye_my_love!
|
46
47
|
|
@@ -66,7 +67,7 @@ module Krakow
|
|
66
67
|
attribute :queue, Queue, :default => ->{ Queue.new }
|
67
68
|
attribute :callbacks, Hash, :default => ->{ Hash.new }
|
68
69
|
attribute :responses, Queue, :default => ->{ Queue.new }
|
69
|
-
attribute :notifier, Celluloid::Actor
|
70
|
+
attribute :notifier, [Celluloid::Signals, Celluloid::Condition, Celluloid::Actor]
|
70
71
|
attribute :features, Hash, :default => ->{ Hash.new }
|
71
72
|
attribute :response_wait, Numeric, :default => 1.0
|
72
73
|
attribute :response_interval, Numeric, :default => 0.03
|
@@ -343,6 +344,21 @@ module Krakow
|
|
343
344
|
true
|
344
345
|
end
|
345
346
|
|
347
|
+
# Send authentication request for connection
|
348
|
+
#
|
349
|
+
# @return [TrueClass]
|
350
|
+
def auth_required
|
351
|
+
info 'Authentication required for this connection'
|
352
|
+
if(feature_args[:auth])
|
353
|
+
transmit(Command::Auth.new(:secret => feature_args[:auth]))
|
354
|
+
response = receive
|
355
|
+
true
|
356
|
+
else
|
357
|
+
error 'No authentication information provided for connection!'
|
358
|
+
abort 'Authentication failure. No authentication secret provided'
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
346
362
|
# Enable snappy feature on underlying socket
|
347
363
|
#
|
348
364
|
# @return [TrueClass]
|
data/lib/krakow/consumer.rb
CHANGED
@@ -31,7 +31,7 @@ module Krakow
|
|
31
31
|
attribute :backoff_interval, Numeric
|
32
32
|
attribute :discovery_interval, Numeric, :default => 30
|
33
33
|
attribute :discovery_jitter, Numeric, :default => 10.0
|
34
|
-
attribute :notifier, Celluloid::Actor
|
34
|
+
attribute :notifier, [Celluloid::Signals, Celluloid::Condition, Celluloid::Actor]
|
35
35
|
attribute :connection_options, Hash, :default => ->{ Hash.new }
|
36
36
|
|
37
37
|
# @!endgroup
|
data/lib/krakow/producer.rb
CHANGED
@@ -36,7 +36,7 @@ module Krakow
|
|
36
36
|
|
37
37
|
def initialize(args={})
|
38
38
|
super
|
39
|
-
arguments[:connection_options] = {:features => {}, :config => {}}.merge(
|
39
|
+
arguments[:connection_options] = {:features => {}, :config => {}, :options => {}}.merge(
|
40
40
|
arguments.fetch(:connection_options, {})
|
41
41
|
)
|
42
42
|
connect
|
@@ -48,12 +48,17 @@ module Krakow
|
|
48
48
|
def connect
|
49
49
|
info "Establishing connection to: #{host}:#{port}"
|
50
50
|
begin
|
51
|
-
|
52
|
-
:host
|
53
|
-
:port
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
con_args = connection_options[:options].dup.tap do |args|
|
52
|
+
args[:host] = host
|
53
|
+
args[:port] = port
|
54
|
+
if(connection_options[:features])
|
55
|
+
args[:features] = connection_options[:features]
|
56
|
+
end
|
57
|
+
if(connection_options[:config])
|
58
|
+
args[:features_args] = connection_options[:config]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
@connection = Connection.new(con_args)
|
57
62
|
connection.init!
|
58
63
|
self.link connection
|
59
64
|
info "Connection established: #{connection}"
|
data/lib/krakow/version.rb
CHANGED
metadata
CHANGED
@@ -1,94 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: krakow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Chris Roberts
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-12-07 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: celluloid-io
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: http
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: multi_json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: snappy
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
type: :runtime
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
52
|
+
- - ">="
|
76
53
|
- !ruby/object:Gem::Version
|
77
54
|
version: '0'
|
78
55
|
- !ruby/object:Gem::Dependency
|
79
56
|
name: digest-crc
|
80
57
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
58
|
requirements:
|
83
|
-
- -
|
59
|
+
- - ">="
|
84
60
|
- !ruby/object:Gem::Version
|
85
61
|
version: '0'
|
86
62
|
type: :runtime
|
87
63
|
prerelease: false
|
88
64
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
65
|
requirements:
|
91
|
-
- -
|
66
|
+
- - ">="
|
92
67
|
- !ruby/object:Gem::Version
|
93
68
|
version: '0'
|
94
69
|
description: NSQ ruby library
|
@@ -100,67 +75,67 @@ extra_rdoc_files:
|
|
100
75
|
- CONTRIBUTING.md
|
101
76
|
- LICENSE
|
102
77
|
files:
|
78
|
+
- CHANGELOG.md
|
79
|
+
- CONTRIBUTING.md
|
80
|
+
- LICENSE
|
81
|
+
- README.md
|
82
|
+
- krakow.gemspec
|
103
83
|
- lib/krakow.rb
|
104
|
-
- lib/krakow/consumer.rb
|
105
|
-
- lib/krakow/frame_type.rb
|
106
84
|
- lib/krakow/command.rb
|
107
|
-
- lib/krakow/
|
108
|
-
- lib/krakow/distribution.rb
|
109
|
-
- lib/krakow/utils/lazy.rb
|
110
|
-
- lib/krakow/utils/logging.rb
|
111
|
-
- lib/krakow/producer.rb
|
112
|
-
- lib/krakow/producer/http.rb
|
113
|
-
- lib/krakow/distribution/default.rb
|
114
|
-
- lib/krakow/frame_type/response.rb
|
115
|
-
- lib/krakow/frame_type/error.rb
|
116
|
-
- lib/krakow/frame_type/message.rb
|
117
|
-
- lib/krakow/command/pub.rb
|
85
|
+
- lib/krakow/command/auth.rb
|
118
86
|
- lib/krakow/command/cls.rb
|
119
|
-
- lib/krakow/command/touch.rb
|
120
87
|
- lib/krakow/command/fin.rb
|
121
88
|
- lib/krakow/command/identify.rb
|
122
|
-
- lib/krakow/command/req.rb
|
123
|
-
- lib/krakow/command/nop.rb
|
124
89
|
- lib/krakow/command/mpub.rb
|
125
|
-
- lib/krakow/command/
|
90
|
+
- lib/krakow/command/nop.rb
|
91
|
+
- lib/krakow/command/pub.rb
|
126
92
|
- lib/krakow/command/rdy.rb
|
93
|
+
- lib/krakow/command/req.rb
|
94
|
+
- lib/krakow/command/sub.rb
|
95
|
+
- lib/krakow/command/touch.rb
|
127
96
|
- lib/krakow/connection.rb
|
128
|
-
- lib/krakow/exceptions.rb
|
129
|
-
- lib/krakow/utils.rb
|
130
|
-
- lib/krakow/discovery.rb
|
131
97
|
- lib/krakow/connection_features.rb
|
132
|
-
- lib/krakow/connection_features/ssl.rb
|
133
|
-
- lib/krakow/connection_features/snappy_frames.rb
|
134
98
|
- lib/krakow/connection_features/deflate.rb
|
135
|
-
- krakow.
|
136
|
-
-
|
137
|
-
-
|
138
|
-
-
|
139
|
-
-
|
99
|
+
- lib/krakow/connection_features/snappy_frames.rb
|
100
|
+
- lib/krakow/connection_features/ssl.rb
|
101
|
+
- lib/krakow/consumer.rb
|
102
|
+
- lib/krakow/discovery.rb
|
103
|
+
- lib/krakow/distribution.rb
|
104
|
+
- lib/krakow/distribution/default.rb
|
105
|
+
- lib/krakow/exceptions.rb
|
106
|
+
- lib/krakow/frame_type.rb
|
107
|
+
- lib/krakow/frame_type/error.rb
|
108
|
+
- lib/krakow/frame_type/message.rb
|
109
|
+
- lib/krakow/frame_type/response.rb
|
110
|
+
- lib/krakow/producer.rb
|
111
|
+
- lib/krakow/producer/http.rb
|
112
|
+
- lib/krakow/utils.rb
|
113
|
+
- lib/krakow/utils/lazy.rb
|
114
|
+
- lib/krakow/utils/logging.rb
|
115
|
+
- lib/krakow/version.rb
|
140
116
|
homepage: http://github.com/chrisroberts/krakow
|
141
117
|
licenses:
|
142
118
|
- Apache 2.0
|
119
|
+
metadata: {}
|
143
120
|
post_install_message:
|
144
121
|
rdoc_options: []
|
145
122
|
require_paths:
|
146
123
|
- lib
|
147
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
-
none: false
|
149
125
|
requirements:
|
150
|
-
- -
|
126
|
+
- - ">="
|
151
127
|
- !ruby/object:Gem::Version
|
152
128
|
version: '0'
|
153
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
130
|
requirements:
|
156
|
-
- -
|
131
|
+
- - ">="
|
157
132
|
- !ruby/object:Gem::Version
|
158
133
|
version: '0'
|
159
134
|
requirements: []
|
160
135
|
rubyforge_project:
|
161
|
-
rubygems_version:
|
136
|
+
rubygems_version: 2.2.2
|
162
137
|
signing_key:
|
163
|
-
specification_version:
|
138
|
+
specification_version: 4
|
164
139
|
summary: NSQ library
|
165
140
|
test_files: []
|
166
141
|
has_rdoc:
|