class ArchivesSpaceSchema
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/aspace_client/archivesspace_json_schema.rb, line 158 def initialize super extend_schema_definition("http://json-schema.org/draft-03/schema#") @attributes["type"] = ArchivesSpaceTypeAttribute @attributes["subtype"] = ArchivesSpaceSubTypeAttribute @attributes["dynamic_enum"] = ArchivesSpaceDynamicEnumAttribute @attributes["properties"] = IfMissingAttribute @uri = URI.parse("http://www.archivesspace.org/archivesspace.json") end
Public Instance Methods
already_failed?(fragments)
click to toggle source
# File lib/aspace_client/archivesspace_json_schema.rb, line 169 def already_failed?(fragments) JSON::Validator.validation_errors.any? {|error| error.fragments == fragments } end
validate(current_schema, data, fragments, options = {})
click to toggle source
Calls superclass method
# File lib/aspace_client/archivesspace_json_schema.rb, line 176 def validate(current_schema, data, fragments, options = {}) super # Run any custom validations if we've made it this far with no errors if !already_failed?(fragments) && current_schema.schema.has_key?("validations") current_schema.schema["validations"].each do |level_and_name| level, name = level_and_name errors = JSONModel::custom_validations[name].call(data) errors.each do |error| error_string = nil if error.is_a? Symbol error_string = "Validation error code: #{error}" else field, msg = error prefix = level == :warning ? "Warning generated for" : "Validation failed for" error_string = "#{prefix} '#{field}': #{msg}" end err = JSON::Schema::ValidationError.new(error_string, fragments, "custom_validation", current_schema) JSON::Validator.validation_error(err) end end end end