Sha256: f84c9e5da692b591690567c60e54ce4054f88308ae131742d3679a2777089e16

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

module Lina
  class Schema
    def self.argument
      {
        type: "object",
        required: ['name', 'params', 'return'],
        properties: {
          name: {
            type: "string",
            description: "api name"
          },
          description: {
            type: 'string',
          },
          params: {
            type: "object",
          },
          return: {
            type: "object",
          }
        }
      }
    end

    def self.params_validator(params)
      {
        type: 'object',
        properties: params
      }
    end
  end

  class Validator
    def self.params_check(schema, data)
      return unless Lina.params_check
      begin
        JSON::Validator.validate!(schema, data, insert_defaults: true)
      rescue JSON::Schema::ValidationError => e
        raise Lina::ParamsCheckError, e.message
      end
    end

    def self.schema_check(schema)
      JSON::Validator.fully_validate_schema(schema)
    end

    def self.return_check(schema, data)
      return unless Lina.return_check
      begin
        JSON::Validator.validate!(schema, data)
      rescue JSON::Schema::ValidationError => e
        raise Lina::ReturnCheckError, e.message
      end
    end

    def self.api_spec_check(schema, data)
      begin
        JSON::Validator.validate!(schema, data)
      rescue JSON::Schema::ValidationError => e
        raise Lina::ApiSpecError, e.message
      end

      validator_message = schema_check(data[:params])
      raise Lina::ApiSpecParamsError, validator_message[0] if validator_message.present?

      validator_message = schema_check(data[:return])
      raise Lina::ApiSpecReturnError, validator_message[0] if validator_message.present?
    end
  end # end of class Validator

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lina-0.0.4 lib/lina/schema.rb
lina-0.0.3 lib/lina/schema.rb
lina-0.0.2 lib/lina/schema.rb