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
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