Sha256: ace8e31c5f90f6a0a69ceed836f803bfd18ae90148f7ea02b49db531d2544ee8
Contents?: true
Size: 1.47 KB
Versions: 19
Compression:
Stored size: 1.47 KB
Contents
require 'json-schema' module Sufia module Arkivo ITEM_SCHEMA = { type: 'object', properties: { token: { type: 'string', required: true }, metadata: { type: 'object', required: true, properties: { title: { type: 'string', required: true }, rights: { type: 'string', required: true }, resourceType: { type: 'string' }, description: { type: 'string' }, publisher: { type: 'string' }, dateCreated: { type: 'string' }, basedNear: { type: 'string' }, identifier: { type: 'string' }, url: { type: 'string' }, language: { type: 'string' } } }, file: { type: 'object', required: true, properties: { base64: { type: 'string', required: true }, md5: { type: 'string', required: true }, filename: { type: 'string', required: true }, contentType: { type: 'string', required: true } } } } }.freeze class InvalidItem < RuntimeError end class SchemaValidator attr_reader :item def initialize(item) @item = item end def call JSON::Validator.validate!(Sufia::Arkivo::ITEM_SCHEMA, item, version: :draft3) rescue JSON::Schema::ValidationError => exception raise Sufia::Arkivo::InvalidItem, exception.message end end end end
Version data entries
19 entries across 19 versions & 1 rubygems