pollen 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e74b102b1d0c5428838a6c35792a1da697a36c9679a642ab349a1d66f11b05e
4
- data.tar.gz: a9fb42c9e8b9f1bb3ef2534b44b5947cb1c6ce1138ebbee7aafddc99ac1e280c
3
+ metadata.gz: f3b3c7581b664928166d1349f6f0600884a59cde5d3f05c767fb100cf76e70c2
4
+ data.tar.gz: 92a9177aeb8b8ecb27a100f387e7d1fe4dc36cc56ab83302190794ff7e3db540
5
5
  SHA512:
6
- metadata.gz: 785f8d2ff608600db96f9d7b8e297568c626804a85a1e2f1ea2fb2f01dfd49e55c9923f3bbb7d92a7b889d54cc7052d37bb05a08f00fed55e5c09f8e8ba0e282
7
- data.tar.gz: e247e3d5e15fa504db27316eb77ba1ebc82939b8ca197fd6b67dc2cd05bb09b2ef196df5085da6d8d5980e73314efa215d312e77506e04f90fe29991ea2e9d1c
6
+ metadata.gz: 23b29ad16c76f36185b13d07a6c9525b1da5320477b0b1aab1d8708b00ca8b6711da957c38048e30c92e857f8ace722c1aabd203301fbeeea67e8f568f132bda
7
+ data.tar.gz: d5963ee38b98895e621ee9ea57cd075d2d4b8975f603bff9e46ae7b92ae0ade2803c27ab2304ff9a47154f64f8b2fee955128cda78eb03f442879bca46c7ce6e
@@ -13,7 +13,7 @@ module Pollen
13
13
  def push!(stream_or_id, event, payload)
14
14
  check_redis!
15
15
  stream = load_stream(stream_or_id)
16
- stream.update!(status: %i[completed failed].include?(event) && event || :pending, payload:)
16
+ stream.update!(status: (%i[completed failed].include?(event) && event) || :pending, payload:)
17
17
  with_redis do |r|
18
18
  r.publish("#{configuration.channel_prefix}:#{stream.id}", "#{event}:#{payload}")
19
19
  end
@@ -25,9 +25,9 @@ module Pollen
25
25
  configuration.redis
26
26
  end
27
27
 
28
- def with_redis(&block)
28
+ def with_redis(&)
29
29
  # Allow raw Redis clients or a client from the pool
30
- configuration.redis.then(&block)
30
+ configuration.redis.then(&)
31
31
  end
32
32
 
33
33
  def check_redis!
@@ -38,7 +38,7 @@ module Pollen
38
38
  end
39
39
 
40
40
  def load_stream(stream_or_id)
41
- (stream_or_id.respond_to?(:id) && stream_or_id || Stream.find(stream_or_id)).tap do |stream|
41
+ ((stream_or_id.respond_to?(:id) && stream_or_id) || Stream.find(stream_or_id)).tap do |stream|
42
42
  unless stream.pending?
43
43
  raise Errors::InvalidStreamStatus,
44
44
  "Stream with id #{stream.id} is already #{stream.status}"
@@ -25,7 +25,7 @@ module Pollen
25
25
  UUID_REGEXP = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/
26
26
 
27
27
  attr_reader :concurrency, :heartbeat, :route_regexp
28
- attr_accessor :authenticator
28
+ attr_accessor :authenticator, :stream_loader
29
29
 
30
30
  def initialize
31
31
  super
@@ -33,6 +33,7 @@ module Pollen
33
33
  @heartbeat = 5
34
34
  @route_regexp = %r{^/pollen/streams/(#{UUID_REGEXP})}
35
35
  @authenticator = ->(_, _) {}
36
+ @stream_loader = ->(owner, id, _request, _env) { Stream.find_by(owner: owner, id: id) }
36
37
  end
37
38
  end
38
39
 
@@ -75,6 +76,10 @@ module Pollen
75
76
  @configuration.root.authenticator = block
76
77
  end
77
78
 
79
+ def load_stream(&block)
80
+ @configuration.root.stream_loader = block
81
+ end
82
+
78
83
  def method_missing(name, *args, **_)
79
84
  @configuration.root.instance_variable_set("@#{name}", *args)
80
85
  end
@@ -41,13 +41,17 @@ module Pollen
41
41
  end
42
42
 
43
43
  def load_stream(stream_id, request, env)
44
- Stream.find_by(owner: authenticate_owner(stream_id, request, env), id: stream_id).tap do |stream|
44
+ stream_loader.call(authenticate_owner(stream_id, request, env), stream_id, request, env).tap do |stream|
45
45
  raise Errors::StreamNotFound, "Unable to find stream with ID #{stream_id}" if stream.nil?
46
46
  end
47
47
  end
48
48
 
49
49
  def authenticator
50
- Pollen.server.configuration.authenticator
50
+ @server.configuration.authenticator
51
+ end
52
+
53
+ def stream_loader
54
+ @server.configuration.stream_loader
51
55
  end
52
56
  end
53
57
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pollen
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pollen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jef Mathiot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-22 00:00:00.000000000 Z
11
+ date: 2024-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,34 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: factory_bot_rails
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec-rails
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
41
  description: An HTTP Pub/Sub engine for Rails.
70
42
  email:
71
43
  - jeff.mathiot@gmail.com
@@ -100,6 +72,7 @@ licenses:
100
72
  metadata:
101
73
  homepage_uri: https://github.com/everestHC-mySofie/pollen
102
74
  source_code_uri: https://github.com/everestHC-mySofie/pollen
75
+ rubygems_mfa_required: 'true'
103
76
  post_install_message:
104
77
  rdoc_options: []
105
78
  require_paths: