class RailwayIpc::IncomingMessage
Constants
- DEFAULT_DECODER
Attributes
errors[R]
message_format[R]
parsed_payload[R]
payload[R]
type[R]
Public Class Methods
new(payload, message_format: nil)
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 7 def initialize(payload, message_format: nil) @message_format = message_format @parsed_payload = JSON.parse(payload) @type = parsed_payload['type'] @payload = payload @errors = {} rescue JSON::ParserError => e raise RailwayIpc::IncomingMessage::ParserError.new(e) end
Public Instance Methods
correlation_id()
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 25 def correlation_id decoded.correlation_id end
decoded()
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 35 def decoded @decoded ||= \ get_decoder(message_format).call(type, parsed_payload['encoded_message']) end
stringify_errors()
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 40 def stringify_errors errors.values.join(', ') end
user_uuid()
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 21 def user_uuid decoded.user_uuid end
uuid()
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 17 def uuid decoded.uuid end
valid?()
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 29 def valid? errors[:uuid] = 'uuid is required' unless uuid.present? errors[:correlation_id] = 'correlation_id is required' unless correlation_id.present? errors.none? end
Private Instance Methods
get_decoder(name)
click to toggle source
# File lib/railway_ipc/incoming_message.rb, line 48 def get_decoder(name) { 'binary_protobuf' => RailwayIpc::MessageDecoders::ProtobufBinaryDecoder, 'json_protobuf' => RailwayIpc::MessageDecoders::ProtobufJsonDecoder }.fetch(name, DEFAULT_DECODER) end