Class: Autoselect::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/autoselect/response.rb

Overview

lib/autoselect/response.rb

Wraps all autoselect responses into a consistent envelope. Config responses (no term) populate config and leave response nil. Term responses populate request, level, response, and optionally next_level.

Instance Method Summary collapse

Constructor Details

#initialize(config:, request:, level:, results:, next_level:, level_map:) ⇒ Response

Returns a new instance of Response.

Parameters:

  • config (Hash, nil)

    populated only for config (no-term) requests

  • request (Hash, nil)

    echo of the incoming request params

  • level (String, nil)

    the level that was queried

  • results (Array, nil)

    the formatted result items

  • next_level (String, nil)

    only present when results is empty

  • level_map (Array, nil)

    not used in output; kept for consistency



15
16
17
18
19
20
21
22
# File 'lib/autoselect/response.rb', line 15

def initialize(config:, request:, level:, results:, next_level:, level_map:)
  @config = config
  @request = request
  @level = level
  @results = results
  @next_level = next_level
  @level_map = level_map
end

Instance Method Details

#as_jsonHash

Returns the full response hash, suitable for render json:.

Returns:

  • (Hash)

    the full response hash, suitable for render json:



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/autoselect/response.rb', line 25

def as_json
  if @config
    {
      resource: @config[:resource],
      levels: @config[:levels],
      operators: @config[:operators],
      map: @config[:map],
      user_preferences: @config[:user_preferences],
      config: @config,
      response: nil
    }
  else
    h = {
      request: @request,
      level: @level,
      response: @results || [],
      config: nil
    }
    h[:next_level] = @next_level if @next_level.present?
    h
  end
end