class Luchadeer::Search
Constants
- QUERY_PARAMS
- RESOURCE_TYPES
Public Class Methods
new(opts = {}) { |self| ... }
click to toggle source
# File lib/luchadeer/search.rb, line 17 def initialize(opts = {}) opts.each do |key, value| send(:"#{key}=", value) end yield self if block_given? end
Public Instance Methods
fetch()
click to toggle source
# File lib/luchadeer/search.rb, line 25 def fetch Luchadeer.client.get('search', search_params).body[:results].map do |r| type = r.delete(:resource_type) RESOURCE_TYPES[type] && RESOURCE_TYPES[type].new(r) end.compact end
resources(resources = nil)
click to toggle source
# File lib/luchadeer/search.rb, line 44 def resources(resources = nil) return @resources unless resources append_resources(resources) self end
sort(attribute = nil, dir = :asc)
click to toggle source
# File lib/luchadeer/search.rb, line 50 def sort(attribute = nil, dir = :asc) return @sort unless attribute @sort = "#{attribute}:#{dir}" self end
Private Instance Methods
append_resources(resources)
click to toggle source
# File lib/luchadeer/search.rb, line 63 def append_resources(resources) @resources ||= '' resources = (RESOURCE_TYPES.invert[resources] || '') if resources.is_a? Class rx = resources.is_a?(Array) ? resources : resources.split(',') rx.each do |r| r = (RESOURCE_TYPES.invert[r] || '') if r.is_a? Class RESOURCE_TYPES[r] or raise(ArgumentError, 'Invalid resource type supplied') @resources << ",#{r}" end @resources.sub!(/\A,+/, '') end
search_params()
click to toggle source
# File lib/luchadeer/search.rb, line 58 def search_params { query: @query, limit: @limit, resources: @resources, page: @page, sort: @sort }.delete_if { |_, v| v.nil? } end