class RailsIbm::Uprofile::Bluepages::Fetch
Public Class Methods
new(uri:)
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 9 def initialize(uri:) @uri = uri end
Public Instance Methods
execute(query:)
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 13 def execute(query:) @query = query return HTTParty.get("#{@uri}/#{uri_params(query)}", headers: headers) unless multiple_search RailsIbm::Uprofile::Async.Requests chunks(query).map { |c| "#{@uri}/#{uri_params(c)}" }, headers end
Private Instance Methods
chunks(users)
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 35 def chunks(users) partial = [[]] users.each do |u| partial.last.push(u) partial.push([]) if encode_uri(partial.last).length > 5000 end partial end
encode_uri(users)
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 31 def encode_uri(users) "#{@uri}/#{ERB::Util.url_encode(uri_params(users))}" end
headers()
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 45 def headers { 'Content-Type': 'application/json', accept: 'application/json' } end
multiple_search()
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 22 def multiple_search @query.is_a?(Array) && @query.size >= 2 end
uri_params(users)
click to toggle source
# File lib/rails_ibm/uprofile/bluepages/fetch.rb, line 26 def uri_params(users) return users.join(',') if multiple_search "#{users.first}/profile" end