class DocomoImageRecognition::Client

Public Class Methods

new(api_key) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 3
def initialize(api_key)
  base_url = DocomoImageRecognition.configuration.base_url
  @base_url = base_url + "?APIKEY=#{api_key}"
end

Public Instance Methods

recognize(data, options = default_options) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 8
def recognize(data, options = default_options)
  url = "#{@base_url}&#{to_query(options)}"
  curl = Curl::Easy.new(url)
  curl.headers['Content-Type'] = 'application/octet-stream'
  curl.post_body = data
  curl.http_post
  body = JSON.parse(curl.body_str)
  raise_on_error!(body, curl.status)
  body
end
recognize_from_file(path, options = default_options) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 19
def recognize_from_file(path, options = default_options)
  data = File.read(path)
  recognize(data, options)
end
recognize_from_url(url, options = default_options) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 24
def recognize_from_url(url, options = default_options)
  data = download_file(url)
  recognize(data, options)
end

Private Instance Methods

default_options() click to toggle source
# File lib/docomo_image_recognition/client.rb, line 36
def default_options
  { recog: 'product-all', numOfCandidates: 10 }
end
download_file(url) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 31
def download_file(url)
  uri = URI(url)
  Net::HTTP.get(uri)
end
raise_on_error!(body, status) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 47
def raise_on_error!(body, status)
  case status.split(' ')[0].to_i
  when 200 then return
  when 401 then fail ApiError.new(body), 'not authorized'
  when 400 then fail ApiError.new(body), 'bad request'
  end
end
to_query(options) click to toggle source
# File lib/docomo_image_recognition/client.rb, line 40
def to_query(options)
  options
    .reject { |_k, v| v.nil? }
    .map { |k, v| k.to_s + '=' + v.to_s }
    .join('&')
end