class PriceGrabber::Request

Attributes

environment[R]

Public Class Methods

new(version:, pid:, key:, asin: nil, q: nil, masterid: nil, upc: nil, environment: :staging, driver: :net_http) click to toggle source
# File lib/pricegrabber/request.rb, line 8
def initialize(version:, pid:, key:, asin: nil, q: nil, masterid: nil, upc: nil, environment: :staging, driver: :net_http)
  @environment = environment
  @version = version
  @pid = pid
  @key = key
  @asin = asin
  @q = q
  @upc = upc
  @masterid = [*masterid]
  @driver = driver
  @wants = []
end

Public Instance Methods

call() click to toggle source
# File lib/pricegrabber/request.rb, line 50
def call
  request = HTTPI::Request.new
  request.url = to_s
  resp = HTTPI.get(request, @driver)
  PriceGrabber::Response.new(resp, @wants)
end
pluck(*attributes) click to toggle source
# File lib/pricegrabber/request.rb, line 57
def pluck(*attributes)
  @wants = attributes.map(&:to_s)
  self
end
to_curl() click to toggle source
# File lib/pricegrabber/request.rb, line 46
def to_curl
  "curl -G '#{to_s}'"
end
to_s() click to toggle source
# File lib/pricegrabber/request.rb, line 42
def to_s
  to_uri.to_s
end
to_uri() click to toggle source
# File lib/pricegrabber/request.rb, line 21
def to_uri
  uri = ::URI::HTTP.build({})
  uri.scheme = "http"
  if @environment == :production
    uri.host = "sws.pricegrabber.com"
  else
    uri.host = "sws.api.pricegrabber.com"
  end
  uri.path = "/search_xml.php"
  uri.query = [
    version,
    pid,
    key,
    asin,
    q,
    upc,
    masterid,
  ].compact.sort.join("&")
  uri
end

Private Instance Methods

asin() click to toggle source
# File lib/pricegrabber/request.rb, line 76
def asin
  if @asin
    "asin=#{@asin}"
  end
end
key() click to toggle source
# File lib/pricegrabber/request.rb, line 72
def key
  "key=#{@key}"
end
masterid() click to toggle source
# File lib/pricegrabber/request.rb, line 94
def masterid
  case @masterid.length
  when 0
    nil
  when 1
    "masterid=#{@masterid.join(",")}"
  else
    "masterids=#{@masterid.join(",")}"
  end
end
pid() click to toggle source
# File lib/pricegrabber/request.rb, line 68
def pid
  "pid=#{@pid}"
end
q() click to toggle source
# File lib/pricegrabber/request.rb, line 82
def q
  if @q
    "q=#{@q.gsub(/\s/, '+')}"
  end
end
upc() click to toggle source
# File lib/pricegrabber/request.rb, line 88
def upc
  if @upc
    "upc=#{@upc}"
  end
end
version() click to toggle source
# File lib/pricegrabber/request.rb, line 64
def version
  "version=#{@version}"
end