Module: Julewire::Core::Propagation::Carrier
- Defined in:
- lib/julewire/core/propagation/carrier.rb
Constant Summary collapse
- DEFAULT_KEY =
"julewire"
Class Method Summary collapse
- .encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil) ⇒ Object
- .extract(carrier, key: DEFAULT_KEY) ⇒ Object
- .inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil) ⇒ Object
- .restore(carrier, key: DEFAULT_KEY, link_executions: false) ⇒ Object
- .serialized_envelope(envelope) ⇒ Object
Class Method Details
.encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/julewire/core/propagation/carrier.rb', line 15 def encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil) Validation.validate_byte_limit!(max_bytes, name: :max_bytes) encoded = JSON.generate(serialized_envelope(envelope), allow_nan: false) return if max_bytes && encoded.bytesize > max_bytes encoded end |
.extract(carrier, key: DEFAULT_KEY) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/julewire/core/propagation/carrier.rb', line 34 def extract(carrier, key: DEFAULT_KEY) value = carrier_value(carrier, key) return {} unless value parsed = JSON.parse(value.to_s) parsed.is_a?(Hash) ? Fields::FieldSet.deep_symbolize_keys(parsed) : {} rescue StandardError {} end |
.inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/julewire/core/propagation/carrier.rb', line 24 def inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil) validate_carrier!(carrier) encoded = encode(envelope: envelope, max_bytes: max_bytes) clear_carrier_key!(carrier, key) unless encoded return unless encoded carrier[key.to_s] = encoded carrier end |
.restore(carrier, key: DEFAULT_KEY, link_executions: false) ⇒ Object
44 45 46 |
# File 'lib/julewire/core/propagation/carrier.rb', line 44 def restore(carrier, key: DEFAULT_KEY, link_executions: false, &) Propagation.restore(extract(carrier, key: key), link_executions: link_executions, &) end |
.serialized_envelope(envelope) ⇒ Object
48 49 50 51 52 |
# File 'lib/julewire/core/propagation/carrier.rb', line 48 def serialized_envelope(envelope) return Propagation.capture if envelope.equal?(DEFAULT_ENVELOPE) Serialization::Serializer.call(envelope) end |