class EventRouter::Serializers::Json

Constants

EVENT_CLASS_ATTRIBUTE_NAME

Public Class Methods

deserialize(payload) click to toggle source
# File lib/event_router/serializers/json.rb, line 20
def deserialize(payload)
  object = JSON.parse(payload)

  return object unless object.is_a?(Hash)
  return object unless object.key?(EVENT_CLASS_ATTRIBUTE_NAME)

  event_class     = object.delete(EVENT_CLASS_ATTRIBUTE_NAME)
  event_instance  = const_get(event_class).new

  object.each do |attribute, value|
    event_instance.instance_variable_set(:"@#{attribute}", value)
  end

  event_instance
end
serialize(object) click to toggle source
# File lib/event_router/serializers/json.rb, line 11
def serialize(object)
  return JSON.generate(object) unless object.is_a?(EventRouter::Event)

  attributes = object.to_h
  attributes[EVENT_CLASS_ATTRIBUTE_NAME] = object.class.name

  JSON.generate(attributes)
end