dapr 0.1.7 → 0.1.9

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: 18607d448ca237f8ab1e47e75f9bee8711f32411d2ba4ff1bbddf7cf03c6cb36
4
- data.tar.gz: 777266b06d1aa008c4ccf2b2e63ea14dca9c4a2b3d61aea5bf33a32584763aad
3
+ metadata.gz: 4258ba872f6fa541527da36af8aefe85d4e2de853f4ea241804925bdad24b77e
4
+ data.tar.gz: 61df815307172cf91bfd147d64709c198efdfb11c75a70f4946c7bd272eded95
5
5
  SHA512:
6
- metadata.gz: 83c76522d026e1096c0ac783a4a6248ee21d2cd11fbad0300e43c92c7003a181d1ee072413d1e3fb63c5bdcd3757c3a5cec0d10428115ebb6767711d07777e52
7
- data.tar.gz: 5553b18c2db27fb3d76bfd2c6f09f1b12f0fb6c94c3ae35541743484841aa4641725f065b9c245cb80db75bce939be5e53ae08aa328c36a3af9a1a50974455c7
6
+ metadata.gz: ad97546a920cd7c77dbca97aa003dd7fce9b101e88d2e76f90e45574c181cf28bdd1185e28028efdd8fe210f16c8d174f2e1ff387e58437a6f4dac73ff2c1ab5
7
+ data.tar.gz: 92db287ba25e3e571348a301257cb743c84a938bc8254e2c84de0fb2dbeb035c66ea7ed47de64fd2474157ce55bae3540adbe386babf20208535bbfec7eb985a
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../service'
4
+
5
+ $stdout.sync = true
6
+
7
+ module Rubyists
8
+ module Dapr
9
+ module Service
10
+ # The Subscriber class is a simple implementation of a Dapr subscriber service.
11
+ class Subscriber
12
+ include SemanticLogger::Loggable
13
+
14
+ attr_reader(:service_proto, :runtime_proto, :pubsub_name, :topics, :event_handler)
15
+
16
+ Port = ENV.fetch('DAPR_GRPC_APP_PORT', 50_051)
17
+
18
+ def initialize(pubsub_name:,
19
+ topics:,
20
+ handler: nil,
21
+ service_proto: Dapr::Proto::Runtime::V1::AppCallback::Service,
22
+ runtime_proto: Dapr::Proto::Runtime::V1)
23
+ @topics = Array(topics)
24
+ @pubsub_name = pubsub_name
25
+ @service_proto = service_proto
26
+ @runtime_proto = runtime_proto
27
+ @handler = handler
28
+ end
29
+
30
+ def handle_event!(topic_event, topic_call)
31
+ return handler&.call(topic_event, topic_call) if handler.respond_to?(:call)
32
+
33
+ logger.warn('Unhandled event: event handler does not respond to #call',
34
+ topic_event:,
35
+ topic_call:,
36
+ handler:)
37
+ end
38
+
39
+ def subscriptions
40
+ @subscriptions ||= topics.map do |topic|
41
+ runtime_proto::TopicSubscription.new(pubsub_name:, topic:)
42
+ end
43
+ end
44
+
45
+ def service # rubocop:disable Metrics/MethodLength
46
+ return @service if @service
47
+
48
+ subscriber = self
49
+ @service = Class.new(service_proto) do
50
+ define_method(:on_topic_event) do |topic_event, topic_call|
51
+ subscriber.handle_event!(topic_event, topic_call)
52
+ Google::Protobuf::Empty.new
53
+ end
54
+ define_method(:list_topic_subscriptions) do |_empty, _call|
55
+ subscriber.runtime_proto::ListTopicSubscriptionsResponse.new(subscriptions: subscriber.subscriptions)
56
+ end
57
+ end
58
+ end
59
+
60
+ def start!
61
+ server = GRPC::RpcServer.new
62
+ server.add_http2_port("0.0.0.0:#{Port}", :this_port_is_insecure)
63
+ server.handle(service)
64
+ log.warn('Starting Dapr Subscriber service', port: Port)
65
+ server.run_till_terminated_or_interrupted([1, +'int', +'SIGQUIT'])
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../dapr'
4
+ require 'dapr/proto/runtime/v1/appcallback_services_pb'
5
+
6
+ module Rubyists
7
+ module Dapr
8
+ # Namespace for Dapr Service classes
9
+ module Service
10
+ include SemanticLogger::Loggable
11
+ end
12
+ end
13
+ end
data/lib/dapr/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rubyists
4
4
  module Dapr
5
- VERSION = '0.1.7'
5
+ VERSION = '0.1.9'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dapr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tj (bougyman) Vanderpoel
@@ -54,6 +54,8 @@ files:
54
54
  - lib/dapr.rb
55
55
  - lib/dapr/client.rb
56
56
  - lib/dapr/client/publisher.rb
57
+ - lib/dapr/service.rb
58
+ - lib/dapr/service/subscriber.rb
57
59
  - lib/dapr/version.rb
58
60
  - sig/dapr.rbs
59
61
  homepage: https://github.com/rubyists/dapr