class NLBSG::SearchRequest

Constants

ALL_SEARCH_FIELDS
MODIFIERS
OPTIONAL_SEARCH_FIELDS
REQUIRED_SEARCH_FIELDS

Public Class Methods

new(string_or_hash) click to toggle source
# File lib/nlbsg/request/search.rb, line 28
def initialize(string_or_hash)
  if string_or_hash.is_a?(String)
    @options = { keywords: string_or_hash }
  elsif string_or_hash.is_a?(Hash)
    @options = string_or_hash
  else
    raise ArgumentError
  end
end

Public Instance Methods

build() click to toggle source
Calls superclass method NLBSG::RequestBase#build
# File lib/nlbsg/request/search.rb, line 38
def build
  search_items = prepare_search_items
  modifiers = prepare_modifiers
  query = prepare_query(search_items, modifiers)

  super(query)
end

Private Instance Methods

add_search_item(field:, terms:) click to toggle source
# File lib/nlbsg/request/search.rb, line 86
def add_search_item(field:, terms:)
  {
    search_field: field.to_s.split('_').collect(&:capitalize).join,
    search_terms: terms
  }
end
prepare_modifiers() click to toggle source
# File lib/nlbsg/request/search.rb, line 64
def prepare_modifiers
  keys = options.keys & MODIFIERS

  modifiers = {}

  keys.each do |key|
    modifiers[key] = options[key]
  end

  modifiers
end
prepare_query(search_items, modifiers) click to toggle source
# File lib/nlbsg/request/search.rb, line 76
def prepare_query(search_items, modifiers)
  {
    search_items:
      {
        search_item: search_items
      },
    modifiers: modifiers
  }
end
prepare_search_items() click to toggle source
# File lib/nlbsg/request/search.rb, line 48
def prepare_search_items
  if (options.keys & REQUIRED_SEARCH_FIELDS).empty?
    raise ArgumentError
  end

  keys = options.keys & ALL_SEARCH_FIELDS

  search_items = []

  keys.each do |key|
    search_items << add_search_item(field: key, terms: options[key])
  end

  search_items
end