Class: Temporal::DataConverter
- Inherits:
-
Object
- Object
- Temporal::DataConverter
- Defined in:
- lib/temporal/data_converter.rb
Defined Under Namespace
Classes: MissingPayload
Instance Method Summary collapse
- #from_failure(failure) ⇒ Object
- #from_payload_map(payload_map) ⇒ Object
- #from_payloads(payloads) ⇒ Object
-
#initialize(payload_converter:, payload_codecs:, failure_converter:) ⇒ DataConverter
constructor
A new instance of DataConverter.
- #to_failure(error) ⇒ Object
- #to_payload_map(data) ⇒ Object
- #to_payloads(data) ⇒ Object
Constructor Details
#initialize(payload_converter:, payload_codecs:, failure_converter:) ⇒ DataConverter
Returns a new instance of DataConverter.
8 9 10 11 12 |
# File 'lib/temporal/data_converter.rb', line 8 def initialize(payload_converter:, payload_codecs:, failure_converter:) @payload_converter = payload_converter @payload_codecs = payload_codecs @failure_converter = failure_converter end |
Instance Method Details
#from_failure(failure) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/temporal/data_converter.rb', line 57 def from_failure(failure) raise ArgumentError, 'missing a failure to convert from' unless failure failure = decode_failure(failure) failure_converter.from_failure(failure, payload_converter) end |
#from_payload_map(payload_map) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/temporal/data_converter.rb', line 43 def from_payload_map(payload_map) return unless payload_map # Protobuf's Hash isn't compatible with the native Hash, ignore rubocop here # rubocop:disable Style/MapToHash payload_map.map do |key, payload| decoded_payload = decode([payload]).first raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload [key, from_payload(decoded_payload)] end.to_h # rubocop:enable Style/MapToHash end |
#from_payloads(payloads) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/temporal/data_converter.rb', line 36 def from_payloads(payloads) return unless payloads decode(payloads.payloads) .map { |payload| from_payload(payload) } end |
#to_failure(error) ⇒ Object
31 32 33 34 |
# File 'lib/temporal/data_converter.rb', line 31 def to_failure(error) failure = failure_converter.to_failure(error, payload_converter) encode_failure(failure) end |
#to_payload_map(data) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/temporal/data_converter.rb', line 21 def to_payload_map(data) data.to_h do |key, value| payload = to_payload(value) encoded_payload = encode([payload]).first raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload [key.to_s, encoded_payload] end end |
#to_payloads(data) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/temporal/data_converter.rb', line 14 def to_payloads(data) return if data.nil? || Array(data).empty? payloads = Array(data).map { |value| to_payload(value) } Temporal::Api::Common::V1::Payloads.new(payloads: encode(payloads)) end |