class RailwayIpc::Rabbitmq::Payload

Attributes

message[R]
type[R]

Public Class Methods

decode(message) click to toggle source
# File lib/railway_ipc/rabbitmq/payload.rb, line 19
def self.decode(message)
  message = JSON.parse(message)
  type = message['type']
  message = Base64.decode64(message['encoded_message'])
  new(type, message)
end
encode(message) click to toggle source
# File lib/railway_ipc/rabbitmq/payload.rb, line 8
def self.encode(message)
  type = message.class.to_s
  begin
    message = Base64.encode64(message.class.encode(message))
  # TODO: also need to rescue Google::Protobuf::TypeError
  rescue NoMethodError
    raise RailwayIpc::InvalidProtobuf.new("Message #{message} is not a valid protobuf")
  end
  new(type, message).to_json
end
new(type, message) click to toggle source
# File lib/railway_ipc/rabbitmq/payload.rb, line 26
def initialize(type, message)
  @type = type
  @message = message
end

Public Instance Methods

to_json() click to toggle source

rubocop:disable Lint/ToJSON

# File lib/railway_ipc/rabbitmq/payload.rb, line 32
def to_json
  {
    type: type,
    encoded_message: message
  }.to_json
end