imagga 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/README.md +28 -1
- data/imagga.gemspec +1 -0
- data/lib/imagga.rb +8 -3
- data/lib/imagga/client.rb +12 -34
- data/lib/imagga/commands.rb +42 -0
- data/lib/imagga/core_client.rb +25 -0
- data/lib/imagga/exceptions.rb +3 -0
- data/lib/imagga/image.rb +59 -2
- data/lib/imagga/image_or_url_parametizer.rb +21 -0
- data/lib/imagga/options.rb +74 -0
- data/lib/imagga/parametizer.rb +18 -0
- data/lib/imagga/rank_color_parametizer.rb +17 -0
- data/lib/imagga/resolution_parametizer.rb +17 -0
- data/lib/imagga/result_builder.rb +27 -0
- data/lib/imagga/version.rb +1 -1
- data/spec/fixtures/crop_response.txt +62 -0
- data/spec/fixtures/extract_response.txt +253 -0
- data/spec/fixtures/rank_response.txt +12 -0
- data/spec/integration/crop_spec.rb +60 -0
- data/spec/integration/extract_spec.rb +51 -0
- data/spec/integration/rank_spec.rb +103 -0
- data/spec/lib/commands_spec.rb +70 -0
- data/spec/lib/core_client_spec.rb +43 -0
- data/spec/lib/crop_info_spec.rb +15 -0
- data/spec/lib/crop_options_spec.rb +24 -0
- data/spec/lib/crop_result_builder_spec.rb +4 -0
- data/spec/lib/extraction_options_spec.rb +16 -51
- data/spec/lib/image_crop_spec.rb +34 -0
- data/spec/lib/image_or_url_parametizer_spec.rb +65 -0
- data/spec/lib/parametizer_spec.rb +42 -0
- data/spec/lib/rank_color_parametizer_spec.rb +27 -0
- data/spec/lib/rank_color_spec.rb +51 -0
- data/spec/lib/rank_options_spec.rb +28 -0
- data/spec/lib/rank_result_builder_spec.rb +1 -12
- data/spec/lib/resolution_parametizer_spec.rb +60 -0
- metadata +63 -28
- data/lib/imagga/extract_options.rb +0 -74
- data/lib/imagga/extract_result_builder.rb +0 -11
- data/lib/imagga/rank_result_builder.rb +0 -9
- data/spec/lib/client_spec.rb +0 -352
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class DummyParametizer; include Imagga::Parametizer; end
|
4
|
+
|
5
|
+
describe Imagga::Parametizer do
|
6
|
+
subject { DummyParametizer.new }
|
7
|
+
|
8
|
+
describe "#build_comma_separated_string" do
|
9
|
+
it "builds list of object fields" do
|
10
|
+
object = stub(field: 'asdf')
|
11
|
+
subject.build_comma_separated_string([object]*2, :field).should == 'asdf,asdf'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "defaults to default value, if field is not present" do
|
15
|
+
object = Object.new
|
16
|
+
object2 = stub(field: 'asdf')
|
17
|
+
subject.build_comma_separated_string([object, object2], :field, 'qwer').should == 'qwer,asdf'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "produces no result if all items default to the default value" do
|
21
|
+
object = Object.new
|
22
|
+
subject.build_comma_separated_string([object]*3, :field, 'qwer').should == nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#build_boolean_options" do
|
27
|
+
it "produces hash with boolean values coded as 1 and 0" do
|
28
|
+
input = { foo: true, boo: false }
|
29
|
+
subject.build_boolean_options(input, [:foo, :boo]).should == { foo: 1, boo: 0 }
|
30
|
+
end
|
31
|
+
|
32
|
+
it "produces hash with initial boolean values '1' and '0' coded as 1 and 0" do
|
33
|
+
input = { foo: '1', boo: '0' }
|
34
|
+
subject.build_boolean_options(input, [:foo, :boo]).should == { foo: 1, boo: 0 }
|
35
|
+
end
|
36
|
+
|
37
|
+
it "produces hash with initial boolean values 1 and 0 coded as 1 and 0" do
|
38
|
+
input = { foo: 1, boo: 0 }
|
39
|
+
subject.build_boolean_options(input, [:foo, :boo]).should == { foo: 1, boo: 0 }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Imagga::RankColorParametizer do
|
4
|
+
subject { described_class.new }
|
5
|
+
|
6
|
+
describe "#parametrize" do
|
7
|
+
it "generates string presentation of the rank color object" do
|
8
|
+
subject.parametrize(Imagga::RankColor.new(percent: 40, hex: '#123456')).should == { color_vector: '40,18,52,86' }
|
9
|
+
end
|
10
|
+
|
11
|
+
it "generates string presentation of many rank color objects" do
|
12
|
+
subject.parametrize([
|
13
|
+
Imagga::RankColor.new(percent: 40, hex: '#123456'),
|
14
|
+
Imagga::RankColor.new(percent: 10, hex: '#23421e'),
|
15
|
+
Imagga::RankColor.new(percent: 33, hex: '#09238f')
|
16
|
+
]).should == { color_vector: '40,18,52,86,10,35,66,30,33,9,35,143' }
|
17
|
+
end
|
18
|
+
|
19
|
+
it "does not change the given color vector string" do
|
20
|
+
subject.parametrize([
|
21
|
+
Imagga::RankColor.new(percent: 40, hex: '#123456'),
|
22
|
+
'10,35,66,30',
|
23
|
+
Imagga::RankColor.new(percent: 33, hex: '#09238f')
|
24
|
+
]).should == { color_vector: '40,18,52,86,10,35,66,30,33,9,35,143' }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Imagga::RankColor do
|
4
|
+
context "when initialized through rgb values" do
|
5
|
+
subject { described_class.new(percent: 40, r: 200, g: 100, b: 50) }
|
6
|
+
|
7
|
+
it "has percent" do
|
8
|
+
subject.percent.should == 40
|
9
|
+
end
|
10
|
+
|
11
|
+
it "has r value" do
|
12
|
+
subject.r.should == 200
|
13
|
+
end
|
14
|
+
|
15
|
+
it "has g value" do
|
16
|
+
subject.g.should == 100
|
17
|
+
end
|
18
|
+
|
19
|
+
it "has b value" do
|
20
|
+
subject.b.should == 50
|
21
|
+
end
|
22
|
+
|
23
|
+
it "has hex value" do
|
24
|
+
subject.hex.should == '#c86432'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "when initialized through hex value" do
|
29
|
+
subject { described_class.new(percent: 40, hex: '#c86432') }
|
30
|
+
|
31
|
+
it "has percent" do
|
32
|
+
subject.percent.should == 40
|
33
|
+
end
|
34
|
+
|
35
|
+
it "has r value" do
|
36
|
+
subject.r.should == 200
|
37
|
+
end
|
38
|
+
|
39
|
+
it "has g value" do
|
40
|
+
subject.g.should == 100
|
41
|
+
end
|
42
|
+
|
43
|
+
it "has b value" do
|
44
|
+
subject.b.should == 50
|
45
|
+
end
|
46
|
+
|
47
|
+
it "has hex value" do
|
48
|
+
subject.hex.should == '#c86432'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Imagga::RankOptions do
|
4
|
+
subject { described_class.new('apikey', 'secret') }
|
5
|
+
|
6
|
+
describe "#options" do
|
7
|
+
|
8
|
+
it "builds options" do
|
9
|
+
subject.options(
|
10
|
+
color_vector: '49,33,44,55,11,22,33,44',
|
11
|
+
urls: 'http://image',
|
12
|
+
type: :object,
|
13
|
+
dist: 3000,
|
14
|
+
count: 10
|
15
|
+
).should == {
|
16
|
+
api_key: 'apikey',
|
17
|
+
color_vector: '49,33,44,55,11,22,33,44',
|
18
|
+
count: '10',
|
19
|
+
dist: '3000',
|
20
|
+
method: 'imagga.colorsearch.rank',
|
21
|
+
sig: '96185035e02a781a7b3455eb500eeec9',
|
22
|
+
type: 'object',
|
23
|
+
urls: 'http://image',
|
24
|
+
v: '1.0'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,18 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Imagga::RankResultBuilder do
|
4
|
-
let(:result) {
|
5
|
-
'rank_similarity' => [
|
6
|
-
{
|
7
|
-
"id" => 8774077,
|
8
|
-
"dist" => 2597.38299
|
9
|
-
},
|
10
|
-
{
|
11
|
-
"id" => 9085916,
|
12
|
-
"dist" => 2681.33259
|
13
|
-
}
|
14
|
-
]
|
15
|
-
} }
|
4
|
+
let(:result) { JSON.parse(IO.read('./spec/fixtures/rank_response.txt')) }
|
16
5
|
|
17
6
|
subject { described_class.new }
|
18
7
|
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Imagga::ResolutionParametizer do
|
4
|
+
subject { described_class.new }
|
5
|
+
|
6
|
+
describe "#parametrize" do
|
7
|
+
it "creates a resolutions parameter for the service" do
|
8
|
+
subject.parametrize('123x342').should == { resolutions: '123,342' }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#build_resolutions" do
|
13
|
+
it "produces empty string from nil input" do
|
14
|
+
subject.build_resolutions(nil).should == ''
|
15
|
+
end
|
16
|
+
|
17
|
+
it "produces empty string from empty string input" do
|
18
|
+
subject.build_resolutions('').should == ''
|
19
|
+
end
|
20
|
+
|
21
|
+
it "produces empty string from empty array" do
|
22
|
+
subject.build_resolutions([]).should == ''
|
23
|
+
end
|
24
|
+
|
25
|
+
it "produces comma separated string from single a x b resolution string" do
|
26
|
+
subject.build_resolutions('123x234').should == '123,234'
|
27
|
+
end
|
28
|
+
|
29
|
+
it "produces comma separated string from many a x b resolutions in one string" do
|
30
|
+
subject.build_resolutions('123x234,90x33,432x88').should == '123,234,90,33,432,88'
|
31
|
+
end
|
32
|
+
|
33
|
+
it "leaves comma seperated resolution as is" do
|
34
|
+
subject.build_resolutions('123,234').should == '123,234'
|
35
|
+
end
|
36
|
+
|
37
|
+
it "produces comma separated string from single element a x b resolution array" do
|
38
|
+
subject.build_resolutions(['123x234']).should == '123,234'
|
39
|
+
end
|
40
|
+
|
41
|
+
it "produces comma separated string from many a x b resolutions in one array" do
|
42
|
+
subject.build_resolutions(['123x234','90x33','432x88']).should == '123,234,90,33,432,88'
|
43
|
+
end
|
44
|
+
|
45
|
+
it "produces comma separated string from mixed format array" do
|
46
|
+
subject.build_resolutions(['123x234,90,33','432x88']).should == '123,234,90,33,432,88'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#build_resolution_string" do
|
51
|
+
it "translates a x b resolution form to comma seperated string" do
|
52
|
+
subject.build_resolution_string('123x234').should == '123,234'
|
53
|
+
end
|
54
|
+
|
55
|
+
it "leaves comma seperated resolution as is" do
|
56
|
+
subject.build_resolution_string('123,234').should == '123,234'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imagga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mart Karu
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-04-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: httparty
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: json
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,15 +34,27 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: color
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.4.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.4.1
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: rspec
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
59
|
- - ~>
|
52
60
|
- !ruby/object:Gem::Version
|
@@ -54,7 +62,6 @@ dependencies:
|
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
66
|
- - ~>
|
60
67
|
- !ruby/object:Gem::Version
|
@@ -62,7 +69,6 @@ dependencies:
|
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: rake
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
73
|
- - ! '>='
|
68
74
|
- !ruby/object:Gem::Version
|
@@ -70,7 +76,6 @@ dependencies:
|
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
80
|
- - ! '>='
|
76
81
|
- !ruby/object:Gem::Version
|
@@ -78,7 +83,6 @@ dependencies:
|
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: fakeweb
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
87
|
- - ! '>='
|
84
88
|
- !ruby/object:Gem::Version
|
@@ -86,7 +90,6 @@ dependencies:
|
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
94
|
- - ! '>='
|
92
95
|
- !ruby/object:Gem::Version
|
@@ -108,58 +111,90 @@ files:
|
|
108
111
|
- imagga.gemspec
|
109
112
|
- lib/imagga.rb
|
110
113
|
- lib/imagga/client.rb
|
114
|
+
- lib/imagga/commands.rb
|
115
|
+
- lib/imagga/core_client.rb
|
111
116
|
- lib/imagga/exceptions.rb
|
112
|
-
- lib/imagga/extract_options.rb
|
113
|
-
- lib/imagga/extract_result_builder.rb
|
114
117
|
- lib/imagga/image.rb
|
115
|
-
- lib/imagga/
|
118
|
+
- lib/imagga/image_or_url_parametizer.rb
|
119
|
+
- lib/imagga/options.rb
|
120
|
+
- lib/imagga/parametizer.rb
|
121
|
+
- lib/imagga/rank_color_parametizer.rb
|
122
|
+
- lib/imagga/resolution_parametizer.rb
|
123
|
+
- lib/imagga/result_builder.rb
|
116
124
|
- lib/imagga/version.rb
|
117
|
-
- spec/
|
125
|
+
- spec/fixtures/crop_response.txt
|
126
|
+
- spec/fixtures/extract_response.txt
|
127
|
+
- spec/fixtures/rank_response.txt
|
128
|
+
- spec/integration/crop_spec.rb
|
129
|
+
- spec/integration/extract_spec.rb
|
130
|
+
- spec/integration/rank_spec.rb
|
131
|
+
- spec/lib/commands_spec.rb
|
132
|
+
- spec/lib/core_client_spec.rb
|
133
|
+
- spec/lib/crop_info_spec.rb
|
134
|
+
- spec/lib/crop_options_spec.rb
|
135
|
+
- spec/lib/crop_result_builder_spec.rb
|
118
136
|
- spec/lib/extract_result_builder_spec.rb
|
119
137
|
- spec/lib/extraction_options_spec.rb
|
120
138
|
- spec/lib/image_color_spec.rb
|
139
|
+
- spec/lib/image_crop_spec.rb
|
121
140
|
- spec/lib/image_info_spec.rb
|
141
|
+
- spec/lib/image_or_url_parametizer_spec.rb
|
122
142
|
- spec/lib/image_spec.rb
|
143
|
+
- spec/lib/parametizer_spec.rb
|
144
|
+
- spec/lib/rank_color_parametizer_spec.rb
|
145
|
+
- spec/lib/rank_color_spec.rb
|
146
|
+
- spec/lib/rank_options_spec.rb
|
123
147
|
- spec/lib/rank_result_builder_spec.rb
|
124
148
|
- spec/lib/rank_similarity_spec.rb
|
149
|
+
- spec/lib/resolution_parametizer_spec.rb
|
125
150
|
- spec/spec_helper.rb
|
126
151
|
homepage: ''
|
127
152
|
licenses: []
|
153
|
+
metadata: {}
|
128
154
|
post_install_message:
|
129
155
|
rdoc_options: []
|
130
156
|
require_paths:
|
131
157
|
- lib
|
132
158
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
159
|
requirements:
|
135
160
|
- - ! '>='
|
136
161
|
- !ruby/object:Gem::Version
|
137
162
|
version: '0'
|
138
|
-
segments:
|
139
|
-
- 0
|
140
|
-
hash: 1906087538434497145
|
141
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
164
|
requirements:
|
144
165
|
- - ! '>='
|
145
166
|
- !ruby/object:Gem::Version
|
146
167
|
version: '0'
|
147
|
-
segments:
|
148
|
-
- 0
|
149
|
-
hash: 1906087538434497145
|
150
168
|
requirements: []
|
151
169
|
rubyforge_project:
|
152
|
-
rubygems_version:
|
170
|
+
rubygems_version: 2.0.3
|
153
171
|
signing_key:
|
154
|
-
specification_version:
|
172
|
+
specification_version: 4
|
155
173
|
summary: Ruby client for accessing Imagga API
|
156
174
|
test_files:
|
157
|
-
- spec/
|
175
|
+
- spec/fixtures/crop_response.txt
|
176
|
+
- spec/fixtures/extract_response.txt
|
177
|
+
- spec/fixtures/rank_response.txt
|
178
|
+
- spec/integration/crop_spec.rb
|
179
|
+
- spec/integration/extract_spec.rb
|
180
|
+
- spec/integration/rank_spec.rb
|
181
|
+
- spec/lib/commands_spec.rb
|
182
|
+
- spec/lib/core_client_spec.rb
|
183
|
+
- spec/lib/crop_info_spec.rb
|
184
|
+
- spec/lib/crop_options_spec.rb
|
185
|
+
- spec/lib/crop_result_builder_spec.rb
|
158
186
|
- spec/lib/extract_result_builder_spec.rb
|
159
187
|
- spec/lib/extraction_options_spec.rb
|
160
188
|
- spec/lib/image_color_spec.rb
|
189
|
+
- spec/lib/image_crop_spec.rb
|
161
190
|
- spec/lib/image_info_spec.rb
|
191
|
+
- spec/lib/image_or_url_parametizer_spec.rb
|
162
192
|
- spec/lib/image_spec.rb
|
193
|
+
- spec/lib/parametizer_spec.rb
|
194
|
+
- spec/lib/rank_color_parametizer_spec.rb
|
195
|
+
- spec/lib/rank_color_spec.rb
|
196
|
+
- spec/lib/rank_options_spec.rb
|
163
197
|
- spec/lib/rank_result_builder_spec.rb
|
164
198
|
- spec/lib/rank_similarity_spec.rb
|
199
|
+
- spec/lib/resolution_parametizer_spec.rb
|
165
200
|
- spec/spec_helper.rb
|
@@ -1,74 +0,0 @@
|
|
1
|
-
module Imagga
|
2
|
-
class BaseOptions
|
3
|
-
attr_accessor :api_key, :api_secret
|
4
|
-
|
5
|
-
def initialize(api_key, api_secret)
|
6
|
-
@version = '1.0'
|
7
|
-
@api_key = api_key || raise_missing(:api_key)
|
8
|
-
@api_secret = api_secret || raise_missing(:api_secret)
|
9
|
-
end
|
10
|
-
|
11
|
-
def base_options
|
12
|
-
{ v: @version, api_key: @api_key }
|
13
|
-
end
|
14
|
-
|
15
|
-
def sign(options)
|
16
|
-
sorted_options_string = options.keys.sort.map do |key|
|
17
|
-
"%s=%s" % [key.to_s, options[key]]
|
18
|
-
end.join('') << @api_secret
|
19
|
-
Digest::MD5.hexdigest(sorted_options_string)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class ExtractOptions < BaseOptions
|
24
|
-
|
25
|
-
def options(urls_or_images, additional_options={})
|
26
|
-
options = base_options.merge(
|
27
|
-
method: 'imagga.colorsearch.extract',
|
28
|
-
urls: build_urls(urls_or_images),
|
29
|
-
)
|
30
|
-
|
31
|
-
if ids = build_ids(urls_or_images)
|
32
|
-
options.merge!(ids: ids)
|
33
|
-
end
|
34
|
-
|
35
|
-
[:extract_overall_colors, :extract_object_colors].each do |key|
|
36
|
-
if additional_options.keys.include?(key) && (value = additional_options[key] ? 1 : 0)
|
37
|
-
options.merge!(key => value)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
options.merge!(sig: sign(options))
|
42
|
-
end
|
43
|
-
|
44
|
-
def build_urls(urls_or_images)
|
45
|
-
[urls_or_images].flatten.map{ |o| o.url rescue o }.join(',')
|
46
|
-
end
|
47
|
-
|
48
|
-
def build_ids(urls_or_images)
|
49
|
-
ids = [urls_or_images].flatten.map{ |o| o.id rescue 0 }
|
50
|
-
return if ids.uniq == [0]
|
51
|
-
ids.join(',')
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
class RankOptions < BaseOptions
|
57
|
-
def options(opts)
|
58
|
-
color_vector = opts.fetch(:color_vector)
|
59
|
-
type = opts.fetch(:type)
|
60
|
-
dist = opts.fetch(:dist)
|
61
|
-
count = opts.fetch(:count)
|
62
|
-
|
63
|
-
options = base_options.merge(
|
64
|
-
method: 'imagga.colorsearch.rank',
|
65
|
-
color_vector: color_vector,
|
66
|
-
type: type,
|
67
|
-
dist: dist,
|
68
|
-
count: count
|
69
|
-
)
|
70
|
-
|
71
|
-
options.merge!(sig: sign(options))
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|