Class: Smith::Workflow::SplitStepPersistence::CanonicalPayloadDigest

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer
Defined in:
lib/smith/workflow/split_step_persistence/canonical_payload_digest.rb

Constant Summary collapse

MAX_BYTES =
4 * 1024 * 1024
MAX_NODES =
100_000

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(payload) ⇒ Object



18
# File 'lib/smith/workflow/split_step_persistence/canonical_payload_digest.rb', line 18

def self.call(payload) = new(payload).call

Instance Method Details

#callObject



20
21
22
23
24
25
26
27
28
# File 'lib/smith/workflow/split_step_persistence/canonical_payload_digest.rb', line 20

def call
  if payload.bytesize > MAX_BYTES
    raise WorkflowError, "split-step preparation payload exceeds maximum bytes #{MAX_BYTES}"
  end

  @nodes = 0
  canonical = canonicalize(JSON.parse(payload))
  Digest::SHA256.hexdigest(JSON.generate(canonical))
end