class JSON::Oas::Validator
Validator
to validate data against a OpenAPI schema
Public Class Methods
compute_fragment(version, opts)
click to toggle source
# File lib/json-schema-oas/validator.rb, line 23 def compute_fragment(version, opts) options = Hash(opts) return options if options[:fragment] if options[:with_schema] options[:fragment] = Fragment.schema_for(version, options[:with_schema].to_s) elsif options[:with_response] options[:fragment] = Fragment.response_schema_for(version, *Array(options[:with_response])) end options end
new(schema_data, data, opts = {})
click to toggle source
Calls superclass method
# File lib/json-schema-oas/validator.rb, line 39 def initialize(schema_data, data, opts = {}) @original_schema = schema_data.dup @oas_version = opts[:oas_version] || Oas::Version::DEFAULT_VERSION raise Error, Error::UNKNOWN_VERSION_ERROR unless Oas::Version::VERSIONS.include?(@oas_version) options = self.class.compute_fragment(@oas_version, opts) super(schema_data, data, options) validate_schema! end
valid_schema?(schema, version)
click to toggle source
# File lib/json-schema-oas/validator.rb, line 11 def valid_schema?(schema, version) specs = case version when Version::OAS2 OAS2_SCHEMA_PATH when Version::OAS3 OAS3_SCHEMA_PATH else raise Error, Error::UNKNOWN_VERSION_ERROR end JSON::Validator.fully_validate(specs, schema).empty? end
Private Instance Methods
initialize_schema(schema)
click to toggle source
Calls superclass method
# File lib/json-schema-oas/validator.rb, line 52 def initialize_schema(schema) schema = super(schema) @original_schema = schema.dup schema end
validate_schema!()
click to toggle source
# File lib/json-schema-oas/validator.rb, line 58 def validate_schema! return true if self.class.valid_schema?(@original_schema.schema, @oas_version) raise Error, Error::INVALID_SCHEMA_ERROR end