Module: RailVerdict::SchemaValidator

Defined in:
lib/rail_verdict/schema_validator.rb

Constant Summary collapse

CONFIGURATION_SCHEMA =
"configuration-v1.schema.json"
CONFIGURATION_V11_SCHEMA =
"configuration-v1.1.schema.json"
CONFIGURATION_V12_SCHEMA =
"configuration-v1.2.schema.json"
CONFIGURATION_V13_SCHEMA =
"configuration-v1.3.schema.json"
CONFIGURATION_V14_SCHEMA =
"configuration-v1.4.schema.json"
AI_ANALYSIS_SCHEMA =
"ai-analysis-v1.schema.json"
FINDING_SCHEMA =
"finding-v1.schema.json"
RESULT_SCHEMA =
"result-v1.schema.json"
BASELINE_SCHEMA =
"baseline-v1.schema.json"
WAIVER_SCHEMA =
"waiver-v1.schema.json"
WAIVERS_SCHEMA =
"waivers-v1.schema.json"
REPAIR_PACKET_SCHEMA =
"repair-packet-v1.schema.json"

Class Method Summary collapse

Class Method Details

.schema_dirObject



21
22
23
# File 'lib/rail_verdict/schema_validator.rb', line 21

def self.schema_dir
  File.expand_path("../../schemas", __dir__)
end

.validate(data, schema_name) ⇒ Object



68
69
70
71
# File 'lib/rail_verdict/schema_validator.rb', line 68

def self.validate(data, schema_name)
  schema = load_schema(schema_name)
  JSONSchemer.schema(schema).validate(data).map { |error| format_error(error) }
end

.validate_ai_analysis(data) ⇒ Object



40
41
42
# File 'lib/rail_verdict/schema_validator.rb', line 40

def self.validate_ai_analysis(data)
  validate(data, AI_ANALYSIS_SCHEMA)
end

.validate_baseline(data) ⇒ Object



52
53
54
# File 'lib/rail_verdict/schema_validator.rb', line 52

def self.validate_baseline(data)
  validate(data, BASELINE_SCHEMA)
end

.validate_configuration(data) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rail_verdict/schema_validator.rb', line 25

def self.validate_configuration(data)
  schema_name = if data.is_a?(Hash) && data["version"] == 1.4
                  CONFIGURATION_V14_SCHEMA
                elsif data.is_a?(Hash) && data["version"] == 1.3
                  CONFIGURATION_V13_SCHEMA
                elsif data.is_a?(Hash) && data["version"] == 1.2
                  CONFIGURATION_V12_SCHEMA
                elsif data.is_a?(Hash) && data["version"] == 1.1
                  CONFIGURATION_V11_SCHEMA
                else
                  CONFIGURATION_SCHEMA
                end
  validate(data, schema_name)
end

.validate_finding(data) ⇒ Object



44
45
46
# File 'lib/rail_verdict/schema_validator.rb', line 44

def self.validate_finding(data)
  validate(data, FINDING_SCHEMA)
end

.validate_repair_packet(data) ⇒ Object



64
65
66
# File 'lib/rail_verdict/schema_validator.rb', line 64

def self.validate_repair_packet(data)
  validate(data, REPAIR_PACKET_SCHEMA)
end

.validate_result(data) ⇒ Object



48
49
50
# File 'lib/rail_verdict/schema_validator.rb', line 48

def self.validate_result(data)
  validate(data, RESULT_SCHEMA)
end

.validate_waiver(data) ⇒ Object



56
57
58
# File 'lib/rail_verdict/schema_validator.rb', line 56

def self.validate_waiver(data)
  validate(data, WAIVER_SCHEMA)
end

.validate_waivers(data) ⇒ Object



60
61
62
# File 'lib/rail_verdict/schema_validator.rb', line 60

def self.validate_waivers(data)
  validate(data, WAIVERS_SCHEMA)
end