Sha256: b90c9d3504862df2928d6b769b6bf388d581d3589524baa8a74c0331aa46d1cd
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true require 'securerandom' module Stenotype # # A class used to serialize a {Stenotype::Event} # upon publishing it to targets # class EventSerializer attr_reader :event, :uuid_generator # # @param event {Stenotype::Event} # @param uuid_generator {#uuid} an object responding to [#uuid] # def initialize(event, uuid_generator: Stenotype.config.uuid_generator) @event = event @uuid_generator = uuid_generator end # # @return {Hash} A hash representation of the event and its context # def serialize { **event_data, **event_options, **default_options, **eval_context_options } end private def event_data event.data end def event_options event.options end def eval_context event.eval_context end def eval_context_options eval_context.map do |context_name, context| handler = Stenotype::ContextHandlers.known.choose(handler_name: context_name) handler.new(context).as_json end.reduce(:merge!) || {} end def default_options { timestamp: Time.now.utc, uuid: uuid_generator.uuid } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
stenotype-0.1.0 | lib/stenotype/event_serializer.rb |