class OpenAPIRest::ApiParameters

Rest Api Parameters

Attributes

allowed_params[R]
validation_errors[R]

Public Class Methods

new(args) click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 8
def initialize(args)
  @params = args.fetch(:params, {})
  @model_class = args.fetch(:api_model).model
  @doc_parser = OpenAPIRest::ApiDocParser.new(args.fetch(:openapi_path, {}))
end

Public Instance Methods

response_permitted_params() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 22
def response_permitted_params
  @doc_parser.find_path.responses.find(response_code).schema.properties.keys.collect(&:to_sym)
end
valid?() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 14
def valid?
  @validation_errors = []

  validate

  @validation_errors.empty?
end

Private Instance Methods

api_definitions(key) click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 72
def api_definitions(key)
  @doc_parser.document.definitions.find(key)
end
api_parameters(key) click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 68
def api_parameters(key)
  @doc_parser.document.parameters.find(key)
end
property() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 56
def property
  @model_class.name.demodulize
end
property_param() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 60
def property_param
  if @model_class.name.nil?
    @model_class.class.name.demodulize.downcase.to_sym
  else
    @model_class.name.demodulize.downcase.to_sym
  end
end
response_code() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 28
def response_code
  return 204 if @doc_parser.method.to_sym == :patch || @doc_parser.method.to_sym == :delete
  return 201 if @doc_parser.method.to_sym == :post
  200
end
root_parameters() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 50
def root_parameters
  params = @doc_parser.find_path.find_parameters
  puts 'ERROR: parameters not found' if params.nil?
  params
end
save_permitted_params() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 46
def save_permitted_params
  root_parameters.keys.collect(&:to_sym)
end
validate() click to toggle source
# File lib/openapi_rest/api_parameters.rb, line 34
def validate
  if !@params.include?(property_param) || @params[property_param].empty?
    @validation_errors << ["Missing Parameter: #{property_param}"]
    return @validation_errors
  end

  @allowed_params = @params.require(property_param).permit(save_permitted_params)
  @validation_errors = @allowed_params.keys.map do |key|
    OpenAPIRest::ApiValidator.new(root_parameters[key.to_s]).evaluate(key, @allowed_params)
  end.compact
end