class GoogleCloudVision::Classifier

classifier for face, text and label detection

Attributes

response[R]

Public Class Methods

new(api_key, images) click to toggle source
# File lib/google_cloud_vision.rb, line 12
def initialize(api_key, images)
  @url = "https://vision.googleapis.com/v1/images:annotate?key=#{api_key}"
  @images = images
  call_vision_api(requests(images))
end

Private Instance Methods

call_vision_api(data) click to toggle source
# File lib/google_cloud_vision.rb, line 40
def call_vision_api(data)
  url = URI(@url)
  req = Net::HTTP::Post.new(url, initheader = { 'Content-Type' =>'application/json' })
  req.body = data
  res = Net::HTTP.new(url.host, url.port)
  res.use_ssl = true
  res.start do |http|
    resp = http.request(req)
    json = JSON.parse(resp.body)
    @response = json
  end
end
request(image) click to toggle source
# File lib/google_cloud_vision.rb, line 28
def request(image)
  {
    image: {
      content: Base64.encode64(File.open(image[:image], 'rb').read)
    },
    features: {
      type: image[:detection],
      maxResults: image[:max_results] || 1
    }
  }
end
requests(images) click to toggle source
# File lib/google_cloud_vision.rb, line 20
def requests(images)
  data = { requests: [] }
  images.each do |image|
    data[:requests] << request(image)
  end
  data.to_json
end