class Esplanade::Response::Validation

Public Class Methods

new(request, doc, raw) click to toggle source
# File lib/esplanade/response/validation.rb, line 6
def initialize(request, doc, raw)
  @request = request
  @doc = doc
  @raw = raw
end

Public Instance Methods

valid!() click to toggle source
# File lib/esplanade/response/validation.rb, line 12
def valid!
  @error ||= if @doc.json_schemas.size == 1
               one_json_schema
             else
               more_than_one_json_schema
             end
  raise Invalid.new(**message) if @error != []
end

Private Instance Methods

message() click to toggle source
# File lib/esplanade/response/validation.rb, line 39
def message
  {
    request: {
      method: @request.raw.method,
      path: @request.raw.path,
      raw_path: @request.raw.raw_path
    },
    status: @raw.status,
    body: @raw.body.to_string,
    error: @error
  }
end
more_than_one_json_schema() click to toggle source
# File lib/esplanade/response/validation.rb, line 27
def more_than_one_json_schema
  main_res = @doc.json_schemas.each do |json_schema|
    res = JSON::Validator.fully_validate(json_schema, @raw.body.to_hash)
    break res if res == []
  end
  if main_res != []
    ['invalid']
  else
    []
  end
end
one_json_schema() click to toggle source
# File lib/esplanade/response/validation.rb, line 23
def one_json_schema
  JSON::Validator.fully_validate(@doc.json_schemas.first, @raw.body.to_hash)
end