From e05cc0ca3f480109373fbd3faf52a952dea6711a Mon Sep 17 00:00:00 2001 From: Mamoon Raja Date: Tue, 1 Oct 2019 14:06:52 -0400 Subject: [PATCH] fix: send multi part data as arrays for image files and image urls --- lib/ibm_watson/visual_recognition_v4.rb | 16 ++++++++++------ test/integration/test_visual_recognition_v4.rb | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/ibm_watson/visual_recognition_v4.rb b/lib/ibm_watson/visual_recognition_v4.rb index fbc1a0a..223f4ab 100644 --- a/lib/ibm_watson/visual_recognition_v4.rb +++ b/lib/ibm_watson/visual_recognition_v4.rb @@ -119,16 +119,18 @@ def analyze(collection_ids:, features:, images_file: nil, image_url: nil, thresh form_data[:features] = HTTP::FormData::Part.new(features.to_s, content_type: "text/plain") + form_data[:images_file] = [] images_file&.each do |item| unless item[:data].instance_of?(StringIO) || item[:data].instance_of?(File) - item.data = item[:data].respond_to?(:to_json) ? StringIO.new(item[:data].to_json) : StringIO.new(item[:data]) + item[:data] = item[:data].respond_to?(:to_json) ? StringIO.new(item[:data].to_json) : StringIO.new(item[:data]) end item[:filename] = item[:data].path if item[:filename].nil? && item[:data].respond_to?(:path) - form_data[:images_file] = HTTP::FormData::File.new(item[:data], content_type: item[:content_type], filename: item[:filename]) + form_data[:images_file].push(HTTP::FormData::File.new(item[:data], content_type: item[:content_type], filename: item[:filename])) end + form_data[:image_url] = [] image_url&.each do |item| - form_data[:image_url] = HTTP::FormData::Part.new(item.to_s, content_type: "text/plain") + form_data[:image_url].push(HTTP::FormData::Part.new(item.to_s, content_type: "text/plain")) end form_data[:threshold] = HTTP::FormData::Part.new(threshold.to_s, content_type: "application/json") unless threshold.nil? @@ -367,16 +369,18 @@ def add_images(collection_id:, images_file: nil, image_url: nil, training_data: form_data = {} + form_data[:images_file] = [] images_file&.each do |item| unless item[:data].instance_of?(StringIO) || item[:data].instance_of?(File) - item.data = item[:data].respond_to?(:to_json) ? StringIO.new(item[:data].to_json) : StringIO.new(item[:data]) + item[:data] = item[:data].respond_to?(:to_json) ? StringIO.new(item[:data].to_json) : StringIO.new(item[:data]) end item[:filename] = item[:data].path if item[:filename].nil? && item[:data].respond_to?(:path) - form_data[:images_file] = HTTP::FormData::File.new(item[:data], content_type: item[:content_type], filename: item[:filename]) + form_data[:images_file].push(HTTP::FormData::File.new(item[:data], content_type: item[:content_type], filename: item[:filename])) end + form_data[:image_url] = [] image_url&.each do |item| - form_data[:image_url] = HTTP::FormData::Part.new(item.to_s, content_type: "text/plain") + form_data[:image_url].push(HTTP::FormData::Part.new(item.to_s, content_type: "text/plain")) end form_data[:training_data] = HTTP::FormData::Part.new(training_data.to_s, content_type: "text/plain") unless training_data.nil? diff --git a/test/integration/test_visual_recognition_v4.rb b/test/integration/test_visual_recognition_v4.rb index 7512a0e..2c205e7 100644 --- a/test/integration/test_visual_recognition_v4.rb +++ b/test/integration/test_visual_recognition_v4.rb @@ -47,6 +47,7 @@ def test_analyze collection_ids: @collection_id, features: "objects" ).result + assert_equal(result["images"].length, 2) refute(result.nil?) end