Class: Temporalio::DataConverter
- Inherits:
-
Object
- Object
- Temporalio::DataConverter
- Defined in:
- lib/temporalio/data_converter.rb
Defined Under Namespace
Classes: MissingPayload
Instance Method Summary collapse
- #from_failure(failure) ⇒ Object
- #from_payload(payload) ⇒ Object
- #from_payload_array(payloads) ⇒ Object
- #from_payload_map(payload_map) ⇒ Object
- #from_payloads(payloads) ⇒ Object
-
#initialize(payload_converter: Temporalio::PayloadConverter::DEFAULT, payload_codecs: [], failure_converter: Temporalio::FailureConverter::DEFAULT) ⇒ DataConverter
constructor
Initialize a new data converter with optional payload converter, codecs and failure converter.
- #to_failure(error) ⇒ Object
- #to_payload(value) ⇒ Object
- #to_payload_array(data) ⇒ Object
- #to_payload_map(data) ⇒ Object
- #to_payloads(data) ⇒ Object
Constructor Details
#initialize(payload_converter: Temporalio::PayloadConverter::DEFAULT, payload_codecs: [], failure_converter: Temporalio::FailureConverter::DEFAULT) ⇒ DataConverter
Initialize a new data converter with optional payload converter, codecs and failure converter.
23 24 25 26 27 28 29 30 31 |
# File 'lib/temporalio/data_converter.rb', line 23 def initialize( payload_converter: Temporalio::PayloadConverter::DEFAULT, payload_codecs: [], failure_converter: Temporalio::FailureConverter::DEFAULT ) @payload_converter = payload_converter @payload_codecs = payload_codecs @failure_converter = failure_converter end |
Instance Method Details
#from_failure(failure) ⇒ Object
98 99 100 101 102 103 |
# File 'lib/temporalio/data_converter.rb', line 98 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(payload) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/temporalio/data_converter.rb', line 66 def from_payload(payload) decoded_payload = decode([payload]).first raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload payload_to_value(decoded_payload) end |
#from_payload_array(payloads) ⇒ Object
73 74 75 76 77 78 |
# File 'lib/temporalio/data_converter.rb', line 73 def from_payload_array(payloads) return [] if payloads.empty? decode(payloads) .map { |payload| payload_to_value(payload) } end |
#from_payload_map(payload_map) ⇒ Object
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/temporalio/data_converter.rb', line 87 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, Style/HashTransformValues payload_map.map do |key, payload| [key, from_payload(payload)] end.to_h # rubocop:enable Style/MapToHash, Style/HashTransformValues end |
#from_payloads(payloads) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/temporalio/data_converter.rb', line 80 def from_payloads(payloads) return unless payloads decode(payloads.payloads) .map { |payload| payload_to_value(payload) } end |
#to_failure(error) ⇒ Object
61 62 63 64 |
# File 'lib/temporalio/data_converter.rb', line 61 def to_failure(error) failure = failure_converter.to_failure(error, payload_converter) encode_failure(failure) end |
#to_payload(value) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/temporalio/data_converter.rb', line 33 def to_payload(value) payload = value_to_payload(value) encoded_payload = encode([payload]).first raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload encoded_payload end |
#to_payload_array(data) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/temporalio/data_converter.rb', line 41 def to_payload_array(data) return [] if data.nil? || Array(data).empty? payloads = Array(data).map { |value| value_to_payload(value) } encode(payloads) end |
#to_payload_map(data) ⇒ Object
55 56 57 58 59 |
# File 'lib/temporalio/data_converter.rb', line 55 def to_payload_map(data) data.to_h do |key, value| [key.to_s, to_payload(value)] end end |
#to_payloads(data) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/temporalio/data_converter.rb', line 48 def to_payloads(data) return if data.nil? || Array(data).empty? payloads = Array(data).map { |value| value_to_payload(value) } Temporalio::Api::Common::V1::Payloads.new(payloads: encode(payloads)) end |