Module: HeapScope::Schema

Defined in:
lib/heapscope/schema.rb

Overview

Validates versioned report JSON payloads.

Constant Summary collapse

REQUIRED_ROOT =
%i[schema_version heapscope_version].freeze

Class Method Summary collapse

Class Method Details

.valid?(data) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
# File 'lib/heapscope/schema.rb', line 21

def valid?(data)
  validate!(data)
  true
rescue InvalidReportError
  false
end

.validate!(data) ⇒ Object

Raises:



10
11
12
13
14
15
16
17
18
19
# File 'lib/heapscope/schema.rb', line 10

def validate!(data)
  data = data.transform_keys(&:to_sym) if data.respond_to?(:transform_keys)
  missing = REQUIRED_ROOT.reject { |k| data.key?(k) }
  raise InvalidReportError, "Missing keys: #{missing.join(', ')}" unless missing.empty?

  version = data[:schema_version].to_i
  raise InvalidReportError, "Unsupported schema_version=#{version}" if version < 1 || version > SCHEMA_VERSION

  true
end