Class: Chronos::Core::PayloadSerializer
- Inherits:
-
Object
- Object
- Chronos::Core::PayloadSerializer
- Defined in:
- lib/chronos/core/payload_serializer.rb
Overview
Converts a Notice into the versioned Chronos JSON envelope.
Instance Method Summary collapse
- #call(notice) ⇒ Object
-
#initialize(config, clock = nil, options = {}) ⇒ PayloadSerializer
constructor
A new instance of PayloadSerializer.
Constructor Details
#initialize(config, clock = nil, options = {}) ⇒ PayloadSerializer
Returns a new instance of PayloadSerializer.
41 42 43 44 45 46 47 |
# File 'lib/chronos/core/payload_serializer.rb', line 41 def initialize(config, clock = nil, = {}) @config = config @clock = clock || proc { Time.now } @sanitizer = [:sanitizer] || Sanitizer.new(config) @safe_serializer = [:safe_serializer] || SafeSerializer.new @max_payload_size = [:max_payload_size] || proc { @config.max_payload_size } end |
Instance Method Details
#call(notice) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/chronos/core/payload_serializer.rb', line 49 def call(notice) envelope = @safe_serializer.call(@sanitizer.call(build_envelope(notice))) body = JSON.generate(envelope) limit = @max_payload_size.call body = JSON.generate(compact_envelope(envelope)) if body.bytesize > limit raise Error, "event exceeds max_payload_size" if body.bytesize > limit SerializedEvent.new(notice.event_id, body) end |