class RailsIbm::Uprofile::Bluepages::Search

Public Class Methods

new(query) click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 11
def initialize(query)
  @query = [query].flatten

  fetch = RailsIbm::Uprofile::Bluepages::Fetch.new(uri: RailsIbm::Uprofile::BLUEPAGES_V3_URI)
  @response = fetch.execute(query: @query)
end

Public Instance Methods

results(parsed: true, remap: false) click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 22
def results(parsed: true, remap: false)
  search_results(parsed: parsed, remap: remap)
end
search_type() click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 18
def search_type
  raise StandardError.new description: "#search_type should be overriden by #{self.class}"
end

Private Instance Methods

parse_multiple_profiles(data) click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 55
def parse_multiple_profiles(data)
  data.flatten.map { |p| p[:profiles] }.flatten
end
parsed_users(remap) click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 40
def parsed_users(remap)
  return [] unless response_valid?

  parsed_results = JSON.parse @response.body, symbolize_names: true
  parsed_results = parse_multiple_profiles([parsed_results]) if multiple_search

  [parsed_results].flatten.map { |result| parse_user result, %i[content], remap: remap }
rescue JSON::ParserError
  []
end
response_valid?() click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 36
def response_valid?
  @response.code >= 200 && @response.code <= 399
end
result_for(query_term, remap) click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 32
def result_for(query_term, remap)
  parsed_users(remap).select { |parsed_user| parsed_user.values.include? query_term }.first
end
search_results(parsed:, remap:) click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 28
def search_results(parsed:, remap:)
  raise StandardError.new description: "#search_results should be overriden by #{self.class}"
end