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
multiple_search()
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/search.rb, line 51 def multiple_search @query.is_a?(Array) && @query.size >= 2 end
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