-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathimagga.rb
32 lines (27 loc) · 1022 Bytes
/
imagga.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require 'rest-client'
require 'base64'
def fetch_imagga(response_image)
tf = Tempfile.open
tf.write(response_image.body)
image_results = ""
File.open(tf.path) do |images_file|
classes = get_classes(images_file)
yield(classes)
end
# Do something with the image results
tf.unlink
end
def get_classes(images_file)
api_key = ENV["IMAGGA_KEY"]
api_secret = ENV["IMAGGA_SECRET"]
auth = 'Basic ' + Base64.strict_encode64( "#{api_key}:#{api_secret}" ).chomp
response = RestClient.post "https://api.imagga.com/v2/uploads", { :image => images_file }, { :Authorization => auth }
response = JSON.parse(response)
p "Image uploda ID:", response["result"]["upload_id"]
image_upload_id = response["result"]["upload_id"]
response = RestClient.get "https://api.imagga.com/v2/tags?image_upload_id=#{image_upload_id}", { :Authorization => auth }
response = JSON.parse(response)
classes = response["result"]["tags"].map { |tag| tag["tag"]["en"]}
p "Recognition result:", classes
classes
end