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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0f52deff91b4ad7115ba25ed76e011854734d7a9d8f887caede8bd99f6f5fa3
4
- data.tar.gz: a33c3d48a9a33767df08bb861a4988d50ad7caa53e9b91fb08b54d3d4358cab4
3
+ metadata.gz: ace94b6d81b1c4b41197669f9cbb6a2faa8d00fc393437a6725e749d660b024f
4
+ data.tar.gz: 8d07eb5a79e6ca8a4fdc987925a95de69158d6cd5dccb4bbb47df3afabd042fc
5
5
  SHA512:
6
- metadata.gz: e188401af67ef99a5d594d831ad4c2c3f9ab090a951f9ee669052f86790785b406b042d6ca9c9d1e50d3a0ee4dcfb336f0db25fa99b98ec2c2417242dcf588cd
7
- data.tar.gz: f36143d8845006299a938034e0e4104c7bb935d3ba7844d6cc160d1cbe5a99c4906a03e4593621e2480d24a8cc22b4277ee7296ac0ebd1daf1386f8e2f32b25b
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 alexandre@buyco.co. All
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)
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 (10.5.0)
41
- redis (4.1.2)
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 (~> 10.0)
63
- redis (~> 4.0)
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/[USERNAME]/redis-stream-wrapper/blob/master/CODE_OF_CONDUCT.md).
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
@@ -2,5 +2,9 @@ require 'dry-struct'
2
2
 
3
3
  # Deprecated but mandatory for "old" projects
4
4
  module Types
5
- include Dry::Types.module
5
+ if Gem.loaded_specs["dry-types"].version >= Gem::Version.create('1.0')
6
+ include Dry::Types()
7
+ else
8
+ include Dry::Types.module
9
+ end
6
10
  end
@@ -1,7 +1,7 @@
1
1
  class Redis
2
2
  module Stream
3
3
  class Wrapper
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.7"
5
5
  end
6
6
  end
7
7
  end
@@ -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 [#{stream}] stream" if @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: Hash[payload.each_slice(2).to_a],
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", "~> 10.0"
27
+ spec.add_development_dependency "rake", "~> 13.0"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
- spec.add_development_dependency "redis", "~> 4.0"
29
+ spec.add_development_dependency "redis", "~> 4.2"
30
30
  spec.add_development_dependency "byebug"
31
31
 
32
32
  spec.add_dependency "dry-struct"
@@ -96,24 +96,24 @@
96
96
  </library>
97
97
  </orderEntry>
98
98
  <orderEntry type="module-library">
99
- <library name="dry-container (vbundled(0.7.1)) [path][gem]" type="rubylib">
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.1/lib" />
105
- <root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.1/spec" />
106
- <root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.1/rakelib" />
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.1/lib" />
111
- <root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.1/spec" />
112
- <root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.1/rakelib" />
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.1/spec" />
116
- <root url="file://$MODULE_DIR$/vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.1/rakelib" />
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
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: 2019-07-24 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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.0'
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.0'
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