Sha256: 29b287001490a4465d794b375052a582b20081a716bd2b9e5652dcf1f8756770

Contents?: true

Size: 545 Bytes

Versions: 6

Compression:

Stored size: 545 Bytes

Contents

require 'json-schema'
require 'esplanade/error'

module Esplanade
  class Request
    class Validation
      def initialize(doc, raw)
        @doc = doc
        @raw = raw
      end

      def valid!
        @error ||= JSON::Validator.fully_validate(@doc.json_schema, @raw.body.to_hash)
        raise Invalid, message if @error != []
      end

      private

      def message
        {
          method: @raw.method,
          path: @raw.path,
          body: @raw.body.to_string,
          error: @error
        }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
esplanade-1.2.0 lib/esplanade/request/validation.rb
esplanade-1.1.2 lib/esplanade/request/validation.rb
esplanade-1.1.1 lib/esplanade/request/validation.rb
esplanade-1.1.0 lib/esplanade/request/validation.rb
esplanade-1.0.1 lib/esplanade/request/validation.rb
esplanade-1.0.0 lib/esplanade/request/validation.rb