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

Version Path
sufia-7.4.1 lib/sufia/arkivo/schema_validator.rb
sufia-7.4.0 lib/sufia/arkivo/schema_validator.rb
sufia-7.3.1 lib/sufia/arkivo/schema_validator.rb
sufia-7.3.0 lib/sufia/arkivo/schema_validator.rb
sufia-7.3.0.rc3 lib/sufia/arkivo/schema_validator.rb
sufia-7.3.0.rc2 lib/sufia/arkivo/schema_validator.rb
sufia-7.3.0.rc1 lib/sufia/arkivo/schema_validator.rb
sufia-7.2.0 lib/sufia/arkivo/schema_validator.rb
sufia-6.7.0 lib/sufia/arkivo/schema_validator.rb
sufia-7.1.0 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0.rc2 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0.rc1 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0.beta4 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0.beta3 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0.beta2 lib/sufia/arkivo/schema_validator.rb
sufia-7.0.0.beta1 lib/sufia/arkivo/schema_validator.rb
sufia-6.6.1 lib/sufia/arkivo/schema_validator.rb
sufia-6.6.0 lib/sufia/arkivo/schema_validator.rb