redis-stream-wrapper 0.1.4 → 0.1.7
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/test.yml +43 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/Gemfile.lock +5 -5
- data/README.md +1 -1
- data/lib/redis/stream/wrapper/message.rb +1 -1
- data/lib/redis/stream/wrapper/types.rb +5 -1
- data/lib/redis/stream/wrapper/version.rb +1 -1
- data/lib/redis/stream/wrapper.rb +16 -4
- data/redis-stream-wrapper.gemspec +2 -2
- data/redis-stream-wrapper.iml +15 -38
- metadata +10 -10
- data/.travis.yml +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ace94b6d81b1c4b41197669f9cbb6a2faa8d00fc393437a6725e749d660b024f
|
4
|
+
data.tar.gz: 8d07eb5a79e6ca8a4fdc987925a95de69158d6cd5dccb4bbb47df3afabd042fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72c64d8c856c73f0a50f0dbd2b5685b62d4f990d3abab0196892a1c2ee7191c551783393b3fa6bd61a25e94c8a26ec09c9db5916b24c5f96e9eea1a60b18c3dc
|
7
|
+
data.tar.gz: ae21f2182c60df4e60244b695c567a182df64d195ebdde03717ad39453299ee31b39dbfbb0320e79af2b2a27dec955cfe7fb433a6ec546c40aee8ad7529cde48
|
@@ -0,0 +1,43 @@
|
|
1
|
+
name: Redis Stream Wrapper tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
- push
|
5
|
+
- workflow_dispatch
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
strategy:
|
10
|
+
matrix:
|
11
|
+
ruby-version: [ 2.6, 2.7 ]
|
12
|
+
|
13
|
+
## Defines the platform for each test run
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
|
16
|
+
steps:
|
17
|
+
## sets up redis with streams supported
|
18
|
+
- name: Start Redis
|
19
|
+
uses: supercharge/redis-github-action@1.2.0
|
20
|
+
with:
|
21
|
+
redis-version: 5
|
22
|
+
|
23
|
+
## sets up ruby based on the version
|
24
|
+
- name: Install Ruby
|
25
|
+
uses: ruby/setup-ruby@v1
|
26
|
+
with:
|
27
|
+
ruby-version: ${{ matrix.ruby-version }}
|
28
|
+
|
29
|
+
## checks out our code locally so we can work with the files
|
30
|
+
- name: Checkout code
|
31
|
+
uses: actions/checkout@v2
|
32
|
+
|
33
|
+
## install deps
|
34
|
+
- name: Install dependencies
|
35
|
+
run: bin/setup
|
36
|
+
|
37
|
+
## run tests
|
38
|
+
- name: Run tests
|
39
|
+
env:
|
40
|
+
REDIS_HOST: localhost
|
41
|
+
REDIS_PORT: 6379
|
42
|
+
REDIS_DB: 1
|
43
|
+
run: rake spec
|
data/CODE_OF_CONDUCT.md
CHANGED
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
|
|
55
55
|
## Enforcement
|
56
56
|
|
57
57
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project team at
|
58
|
+
reported by contacting the project team at dev@buyco.co. All
|
59
59
|
complaints will be reviewed and investigated and will result in a response that
|
60
60
|
is deemed necessary and appropriate to the circumstances. The project team is
|
61
61
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
redis-stream-wrapper (0.1.
|
4
|
+
redis-stream-wrapper (0.1.6)
|
5
5
|
dry-struct
|
6
6
|
|
7
7
|
GEM
|
@@ -37,8 +37,8 @@ GEM
|
|
37
37
|
dry-inflector (~> 0.1, >= 0.1.2)
|
38
38
|
dry-logic (~> 1.0, >= 1.0.2)
|
39
39
|
ice_nine (0.11.2)
|
40
|
-
rake (
|
41
|
-
redis (4.
|
40
|
+
rake (13.0.1)
|
41
|
+
redis (4.6.0)
|
42
42
|
rspec (3.8.0)
|
43
43
|
rspec-core (~> 3.8.0)
|
44
44
|
rspec-expectations (~> 3.8.0)
|
@@ -59,8 +59,8 @@ PLATFORMS
|
|
59
59
|
DEPENDENCIES
|
60
60
|
bundler (~> 2.0)
|
61
61
|
byebug
|
62
|
-
rake (~>
|
63
|
-
redis (~> 4.
|
62
|
+
rake (~> 13.0)
|
63
|
+
redis (~> 4.2)
|
64
64
|
redis-stream-wrapper!
|
65
65
|
rspec (~> 3.0)
|
66
66
|
|
data/README.md
CHANGED
@@ -36,4 +36,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
36
36
|
|
37
37
|
## Code of Conduct
|
38
38
|
|
39
|
-
Everyone interacting in the Redis::Stream::Wrapper project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
39
|
+
Everyone interacting in the Redis::Stream::Wrapper project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/buyco/redis-stream-wrapper/blob/master/CODE_OF_CONDUCT.md).
|
@@ -7,7 +7,7 @@ class Redis
|
|
7
7
|
class Message < ::Dry::Struct::Value
|
8
8
|
# Types = ::Dry.Types(default: :nominal)
|
9
9
|
attribute :stream, ::Types::Coercible::String
|
10
|
-
attribute :id, ::Types::Coercible::String.optional.default('*')
|
10
|
+
attribute :id, ::Types::Coercible::String.optional.default('*'.freeze)
|
11
11
|
attribute :payload, ::Types::Hash.map(::Types::Coercible::String, ::Types::Coercible::String)
|
12
12
|
end
|
13
13
|
end
|
data/lib/redis/stream/wrapper.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
require 'dry-struct'
|
2
|
+
require 'redis/stream/wrapper/message'
|
3
|
+
require 'redis/stream/wrapper/version'
|
4
|
+
require 'redis/stream/wrapper/exceptions'
|
5
|
+
|
2
6
|
class Redis
|
3
7
|
module Stream
|
4
8
|
class Wrapper
|
@@ -39,12 +43,12 @@ class Redis
|
|
39
43
|
# @param opts - A hash of options
|
40
44
|
#
|
41
45
|
def listen(group, consumer_name, streams, opts = {})
|
42
|
-
raise StreamReadError, "Already listening
|
46
|
+
raise StreamReadError, "Already listening #{streams.keys} stream" if @listening
|
43
47
|
|
44
48
|
@listening = true
|
45
49
|
opts[:block] = @read_timeout_ms if opts[:block].nil?
|
46
50
|
while @listening
|
47
|
-
results = @redis.xreadgroup(group, consumer_name, streams.keys, streams.values, opts)
|
51
|
+
results = @redis.xreadgroup(group, consumer_name, streams.keys, streams.values, **opts)
|
48
52
|
next unless results
|
49
53
|
|
50
54
|
parse_read_response(results).each do |message|
|
@@ -62,7 +66,7 @@ class Redis
|
|
62
66
|
#
|
63
67
|
def read(group, consumer_name, streams, opts = {})
|
64
68
|
opts[:block] = @read_timeout_ms if opts[:block].nil?
|
65
|
-
results = @redis.xreadgroup(group, consumer_name, streams.keys, streams.values, opts)
|
69
|
+
results = @redis.xreadgroup(group, consumer_name, streams.keys, streams.values, **opts)
|
66
70
|
return unless results
|
67
71
|
|
68
72
|
parse_read_response(results).each.map do |message|
|
@@ -140,13 +144,21 @@ class Redis
|
|
140
144
|
messages.map do |id, payload|
|
141
145
|
Message.new(
|
142
146
|
stream: stream_name,
|
143
|
-
payload:
|
147
|
+
payload: parse_payload(payload),
|
144
148
|
id: id
|
145
149
|
)
|
146
150
|
end
|
147
151
|
end.flatten.compact
|
148
152
|
end
|
149
153
|
|
154
|
+
def parse_payload(payload)
|
155
|
+
if payload.is_a? Array
|
156
|
+
Hash[payload.each_slice(2).to_a]
|
157
|
+
else
|
158
|
+
payload
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
150
162
|
# Returns a copy of the current instance, with the id set.
|
151
163
|
#
|
152
164
|
def copy_message(message, new_id)
|
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 2.0"
|
27
|
-
spec.add_development_dependency "rake", "~>
|
27
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
29
|
-
spec.add_development_dependency "redis", "~> 4.
|
29
|
+
spec.add_development_dependency "redis", "~> 4.2"
|
30
30
|
spec.add_development_dependency "byebug"
|
31
31
|
|
32
32
|
spec.add_dependency "dry-struct"
|
data/redis-stream-wrapper.iml
CHANGED
@@ -96,24 +96,24 @@
|
|
96
96
|
</library>
|
97
97
|
</orderEntry>
|
98
98
|
<orderEntry type="module-library">
|
99
|
-
<library name="dry-container (vbundled(0.7.
|
99
|
+
<library name="dry-container (vbundled(0.7.2)) [path][gem]" type="rubylib">
|
100
100
|
<properties>
|
101
101
|
<option name="version" value="4" />
|
102
102
|
</properties>
|
103
103
|
<CLASSES>
|
104
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
105
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
106
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
104
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/lib" />
|
105
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/spec" />
|
106
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/rakelib" />
|
107
107
|
</CLASSES>
|
108
108
|
<JAVADOC />
|
109
109
|
<SOURCES>
|
110
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
111
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
112
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
110
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/lib" />
|
111
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/spec" />
|
112
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/rakelib" />
|
113
113
|
</SOURCES>
|
114
114
|
<excluded>
|
115
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
116
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.
|
115
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/spec" />
|
116
|
+
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/rakelib" />
|
117
117
|
</excluded>
|
118
118
|
</library>
|
119
119
|
</orderEntry>
|
@@ -259,39 +259,10 @@
|
|
259
259
|
</SOURCES>
|
260
260
|
<excluded>
|
261
261
|
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/ice_nine-0.11.2/spec" />
|
262
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/ice_nine-0.11.2/config" />
|
263
262
|
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/ice_nine-0.11.2/benchmarks" />
|
264
263
|
</excluded>
|
265
264
|
</library>
|
266
265
|
</orderEntry>
|
267
|
-
<orderEntry type="module-library">
|
268
|
-
<library name="rake (vbundled(10.5.0)) [path][gem]" type="rubylib">
|
269
|
-
<properties>
|
270
|
-
<option name="version" value="4" />
|
271
|
-
</properties>
|
272
|
-
<CLASSES>
|
273
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/bin" />
|
274
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc" />
|
275
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib" />
|
276
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test" />
|
277
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib" />
|
278
|
-
</CLASSES>
|
279
|
-
<JAVADOC />
|
280
|
-
<SOURCES>
|
281
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/bin" />
|
282
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc" />
|
283
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib" />
|
284
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test" />
|
285
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib" />
|
286
|
-
</SOURCES>
|
287
|
-
<excluded>
|
288
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/bin" />
|
289
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc" />
|
290
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test" />
|
291
|
-
<root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib" />
|
292
|
-
</excluded>
|
293
|
-
</library>
|
294
|
-
</orderEntry>
|
295
266
|
<orderEntry type="module-library">
|
296
267
|
<library name="redis (vbundled(4.1.2)) [path][gem]" type="rubylib">
|
297
268
|
<properties>
|
@@ -382,5 +353,11 @@
|
|
382
353
|
</library>
|
383
354
|
</orderEntry>
|
384
355
|
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.0.2, rbenv: 2.6.3) [gem]" level="application" />
|
356
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, rbenv: 2.6.3) [gem]" level="application" />
|
357
|
+
</component>
|
358
|
+
<component name="RakeTasksCache">
|
359
|
+
<option name="myRootTask">
|
360
|
+
<RakeTaskImpl id="rake" />
|
361
|
+
</option>
|
385
362
|
</component>
|
386
363
|
</module>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-stream-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Del Vecchio
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '4.
|
61
|
+
version: '4.2'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '4.
|
68
|
+
version: '4.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: byebug
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,10 +101,10 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- ".github/workflows/test.yml"
|
104
105
|
- ".gitignore"
|
105
106
|
- ".rspec"
|
106
107
|
- ".ruby-version"
|
107
|
-
- ".travis.yml"
|
108
108
|
- CODE_OF_CONDUCT.md
|
109
109
|
- Gemfile
|
110
110
|
- Gemfile.lock
|
@@ -124,7 +124,7 @@ homepage: https://github.com/buyco/redis-stream-wrapper
|
|
124
124
|
licenses:
|
125
125
|
- MIT
|
126
126
|
metadata: {}
|
127
|
-
post_install_message:
|
127
|
+
post_install_message:
|
128
128
|
rdoc_options: []
|
129
129
|
require_paths:
|
130
130
|
- lib
|
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
140
|
version: '0'
|
141
141
|
requirements: []
|
142
142
|
rubygems_version: 3.0.3
|
143
|
-
signing_key:
|
143
|
+
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: Redis Stream Wrapper
|
146
146
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
cache: bundler
|
4
|
-
|
5
|
-
services:
|
6
|
-
- redis-server
|
7
|
-
|
8
|
-
rvm:
|
9
|
-
- 2.6.3
|
10
|
-
|
11
|
-
sudo: false
|
12
|
-
|
13
|
-
env:
|
14
|
-
global:
|
15
|
-
- REDIS_HOST=localhost
|
16
|
-
- REDIS_PORT=6379
|
17
|
-
- REDIS_DB=1
|
18
|
-
|
19
|
-
install:
|
20
|
-
- bin/setup
|
21
|
-
|
22
|
-
script: rake spec
|