class Tinplate::TinEye

Constants

ORDERS
SORTS

Public Instance Methods

image_count() click to toggle source
# File lib/tinplate/tineye.rb, line 36
def image_count
  request("image_count")["results"]
end
remaining_searches() click to toggle source
# File lib/tinplate/tineye.rb, line 24
def remaining_searches
  results = request("remaining_searches")["results"]

  bundles = results["bundles"].map do |bundle|
    OpenStruct.new(remaining_searches: bundle["remaining_searches"],
                   start_date:  Time.parse(bundle["start_date"]),
                   expire_date: Time.parse(bundle["expire_date"]))
  end

  OpenStruct.new(total_remaining_searches: results["total_remaining_searches"], bundles: bundles)
end

Private Instance Methods

connection() click to toggle source
# File lib/tinplate/tineye.rb, line 64
def connection
  @conn ||= Faraday.new(url: "https://api.tineye.com/rest/") do |faraday|
    faraday.request  :multipart
    faraday.request  :url_encoded
    faraday.adapter  Faraday.default_adapter
  end
end
request(action, params = {}) click to toggle source
# File lib/tinplate/tineye.rb, line 42
def request(action, params = {})
  http_verb = :get

  upload = if params[:image_path]
    http_verb = :post
    Faraday::UploadIO.new(params.delete(:image_path), "image/jpeg")
  end

  auth = Tinplate::RequestAuthenticator.new(action, params, upload && upload.original_filename)
  params.merge!(auth.params)

  params.merge!(image_upload: upload) if upload

  response = ::JSON.parse(connection.send(http_verb, "#{action}/", params).body)

  if response["code"] != 200
    raise Tinplate::Error.from_response(response["code"], response["messages"][0], response["messages"][1])
  end

  response
end