Class: Steppe::Endpoint::QueryValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/steppe/endpoint.rb

Overview

Internal step that validates query parameters against a schema. Merges validated query params into the result params hash. Returns 422 Unprocessable Entity if validation fails.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(query_schema) ⇒ QueryValidator

Returns a new instance of QueryValidator.

Parameters:

  • query_schema (Hash, Plumb::Composable)

    Schema definition for query parameters



131
132
133
# File 'lib/steppe/endpoint.rb', line 131

def initialize(query_schema)
  @query_schema = query_schema.is_a?(Hash) ? Types::Hash[query_schema] : query_schema
end

Instance Attribute Details

#query_schemaObject (readonly)

Returns the value of attribute query_schema.



128
129
130
# File 'lib/steppe/endpoint.rb', line 128

def query_schema
  @query_schema
end

Instance Method Details

#call(conn) ⇒ Result

Returns Updated result with validated params or error response.

Parameters:

  • conn (Result)

    The current result/connection object

Returns:

  • (Result)

    Updated result with validated params or error response



137
138
139
140
141
142
143
# File 'lib/steppe/endpoint.rb', line 137

def call(conn)
  result = query_schema.resolve(conn.request.steppe_url_params)
  conn = conn.copy(params: conn.params.merge(result.value))
  return conn if result.valid?

  conn.respond_with(422).invalid(errors: result.errors)
end