Sha256: a53e3a63150e7e431e89abf257442bdd4869a565cd44cb3425c85774711f3599
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true module RailwayIpc class IncomingMessage attr_reader :type, :message_format, :payload, :parsed_payload, :errors 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 def uuid decoded.uuid end def user_uuid decoded.user_uuid end def correlation_id decoded.correlation_id end def valid? errors[:uuid] = 'uuid is required' unless uuid.present? errors[:correlation_id] = 'correlation_id is required' unless correlation_id.present? errors.none? end def decoded @decoded ||= \ get_decoder(message_format).call(type, parsed_payload['encoded_message']) end def stringify_errors errors.values.join(', ') end private DEFAULT_DECODER = RailwayIpc::MessageDecoders::ProtobufBinaryDecoder def get_decoder(name) { 'protobuf_binary' => RailwayIpc::MessageDecoders::ProtobufBinaryDecoder, 'protobuf_json' => RailwayIpc::MessageDecoders::ProtobufJsonDecoder }.fetch(name, DEFAULT_DECODER) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
railway-ipc-4.0.1 | lib/railway_ipc/incoming_message.rb |
railway-ipc-4.0.0 | lib/railway_ipc/incoming_message.rb |