Class: Deimos::Transcoder
- Inherits:
-
Object
- Object
- Deimos::Transcoder
- Defined in:
- lib/deimos/transcoder.rb
Instance Attribute Summary collapse
-
#backend ⇒ Class < Deimos::SchemaBackends::Base]
Class < Deimos::SchemaBackends::Base].
-
#backend_type ⇒ Object
Returns the value of attribute backend_type.
-
#key_field ⇒ Object
Returns the value of attribute key_field.
Instance Method Summary collapse
- #call(message) ⇒ Object
- #decode_key(key) ⇒ Object
- #decode_message(payload) ⇒ Object
- #decode_message_hash(payload) ⇒ Object
- #encode(payload) ⇒ String
-
#encode_key(key) ⇒ String
for use in test helpers.
-
#initialize(schema:, namespace:, key_field: nil, use_schema_classes: nil, topic: nil, backend: nil) ⇒ Transcoder
constructor
A new instance of Transcoder.
Constructor Details
#initialize(schema:, namespace:, key_field: nil, use_schema_classes: nil, topic: nil, backend: nil) ⇒ Transcoder
Returns a new instance of Transcoder.
12 13 14 15 16 17 18 19 |
# File 'lib/deimos/transcoder.rb', line 12 def initialize(schema:, namespace:, key_field: nil, use_schema_classes: nil, topic: nil, backend: nil) @schema = schema @namespace = namespace self.key_field = key_field @use_schema_classes = use_schema_classes @backend_type = backend @topic = topic end |
Instance Attribute Details
#backend ⇒ Class < Deimos::SchemaBackends::Base]
Returns Class < Deimos::SchemaBackends::Base].
22 23 24 |
# File 'lib/deimos/transcoder.rb', line 22 def backend @backend end |
#backend_type ⇒ Object
Returns the value of attribute backend_type.
4 5 6 |
# File 'lib/deimos/transcoder.rb', line 4 def backend_type @backend_type end |
#key_field ⇒ Object
Returns the value of attribute key_field.
4 5 6 |
# File 'lib/deimos/transcoder.rb', line 4 def key_field @key_field end |
Instance Method Details
#call(message) ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'lib/deimos/transcoder.rb', line 77 def call() if self.key_field decode_key(.raw_key) elsif .respond_to?(:raw_payload) (.raw_payload) else (.raw_key) end end |
#decode_key(key) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/deimos/transcoder.rb', line 41 def decode_key(key) return nil if key.nil? || self.key_field.nil? decoded_key = self.backend.decode_key(key, self.key_field) return decoded_key if self.key_field || !@use_schema_classes schema_key = decoded_key.is_a?(Hash) ? decoded_key : { self.key_field => decoded_key } Utils::SchemaClass.instance(schema_key, "#{@schema}_key", @namespace) end |
#decode_message(payload) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/deimos/transcoder.rb', line 56 def (payload) return nil if payload.nil? decoded_payload = self.backend.decode(payload) return decoded_payload if !@use_schema_classes || !decoded_payload.is_a?(Hash) Utils::SchemaClass.instance(decoded_payload, @schema, @namespace) end |
#decode_message_hash(payload) ⇒ Object
89 90 91 |
# File 'lib/deimos/transcoder.rb', line 89 def (payload) self.key_field ? decode_key(payload) : (payload) end |
#encode(payload) ⇒ String
69 70 71 72 73 |
# File 'lib/deimos/transcoder.rb', line 69 def encode(payload) return nil if payload.nil? self.backend.encode(payload) end |
#encode_key(key) ⇒ String
for use in test helpers
31 32 33 34 35 36 37 |
# File 'lib/deimos/transcoder.rb', line 31 def encode_key(key) if self.key_field self.backend.encode_key(self.key_field, key, topic: @topic) else self.backend.encode(key, topic: @topic) end end |