Class: JetstreamBridge::Models::Event
- Inherits:
-
Object
- Object
- JetstreamBridge::Models::Event
- Defined in:
- lib/jetstream_bridge/models/event.rb
Overview
Structured event object provided to consumers
Defined Under Namespace
Classes: Metadata, PayloadAccessor
Instance Attribute Summary collapse
- #event_id ⇒ String, ... readonly
- #metadata ⇒ String, ... readonly
- #occurred_at ⇒ String, ... readonly
-
#payload ⇒ Object
readonly
Access payload with method-style syntax.
- #producer ⇒ String, ... readonly
- #resource_id ⇒ String, ... readonly
- #resource_type ⇒ String, ... readonly
- #schema_version ⇒ String, ... readonly
- #trace_id ⇒ String, ... readonly
- #type ⇒ String, ... readonly
Instance Method Summary collapse
-
#[](key) ⇒ Object
Support hash-like access for backwards compatibility.
-
#deliveries ⇒ Integer
Number of times this message has been delivered.
-
#initialize(envelope, metadata: {}) ⇒ Event
constructor
A new instance of Event.
- #inspect ⇒ Object
-
#sequence ⇒ Integer?
Message sequence number in the stream.
-
#stream ⇒ String?
Stream this message came from.
-
#subject ⇒ String
Subject this message was received on.
-
#to_envelope ⇒ Hash
Get raw envelope hash.
-
#to_h ⇒ Hash
(also: #to_hash)
Get hash representation.
Constructor Details
#initialize(envelope, metadata: {}) ⇒ Event
Returns a new instance of Event.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/jetstream_bridge/models/event.rb', line 109 def initialize(envelope, metadata: {}) envelope = envelope.transform_keys(&:to_s) if envelope.respond_to?(:transform_keys) @event_id = envelope['event_id'] @type = envelope['event_type'] @resource_type = envelope['resource_type'] @resource_id = envelope['resource_id'] @producer = envelope['producer'] @schema_version = envelope['schema_version'] || 1 @trace_id = envelope['trace_id'] @occurred_at = parse_time(envelope['occurred_at']) @payload = PayloadAccessor.new(envelope['payload'] || {}) = () @raw_envelope = envelope freeze end |
Instance Attribute Details
#event_id ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def event_id @event_id end |
#metadata ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def end |
#occurred_at ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def occurred_at @occurred_at end |
#payload ⇒ Object (readonly)
Access payload with method-style syntax
133 134 135 |
# File 'lib/jetstream_bridge/models/event.rb', line 133 def payload @payload end |
#producer ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def producer @producer end |
#resource_id ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def resource_id @resource_id end |
#resource_type ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def resource_type @resource_type end |
#schema_version ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def schema_version @schema_version end |
#trace_id ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def trace_id @trace_id end |
#type ⇒ String, ... (readonly)
103 104 105 |
# File 'lib/jetstream_bridge/models/event.rb', line 103 def type @type end |
Instance Method Details
#[](key) ⇒ Object
Support hash-like access for backwards compatibility
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/jetstream_bridge/models/event.rb', line 195 def [](key) case key.to_s when 'event_id' then @event_id when 'event_type' then @type when 'resource_type' then @resource_type when 'resource_id' then @resource_id when 'producer' then @producer when 'occurred_at' then @occurred_at&.iso8601 when 'trace_id' then @trace_id when 'schema_version' then @schema_version when 'payload' then @payload.to_h else @raw_envelope[key.to_s] end end |
#deliveries ⇒ Integer
Number of times this message has been delivered
165 166 167 |
# File 'lib/jetstream_bridge/models/event.rb', line 165 def deliveries .deliveries || 1 end |
#inspect ⇒ Object
190 191 192 |
# File 'lib/jetstream_bridge/models/event.rb', line 190 def inspect "#<#{self.class.name} id=#{@event_id} type=#{@type} deliveries=#{deliveries}>" end |
#sequence ⇒ Integer?
Message sequence number in the stream
186 187 188 |
# File 'lib/jetstream_bridge/models/event.rb', line 186 def sequence .sequence end |
#stream ⇒ String?
Stream this message came from
179 180 181 |
# File 'lib/jetstream_bridge/models/event.rb', line 179 def stream .stream end |
#subject ⇒ String
Subject this message was received on
172 173 174 |
# File 'lib/jetstream_bridge/models/event.rb', line 172 def subject .subject end |
#to_envelope ⇒ Hash
Get raw envelope hash
138 139 140 |
# File 'lib/jetstream_bridge/models/event.rb', line 138 def to_envelope @raw_envelope end |
#to_h ⇒ Hash Also known as: to_hash
Get hash representation
145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/jetstream_bridge/models/event.rb', line 145 def to_h { event_id: @event_id, type: @type, resource_type: @resource_type, resource_id: @resource_id, producer: @producer, occurred_at: @occurred_at&.iso8601, trace_id: @trace_id, schema_version: @schema_version, payload: @payload.to_h, metadata: .to_h } end |