Skip to content

Commit ed96d5d

Browse files
fix the json encoding of classifier ids
1 parent 7e4b4f3 commit ed96d5d

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

services/visual_recognition/v2-beta.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
var extend = require('extend');
2020
var pick = require('object.pick');
21+
var util = require('util');
2122
var omit = require('object.omit');
2223
var isStream = require('isstream');
2324
var requestFactory = require('../../lib/requestwrapper');
@@ -158,21 +159,25 @@ VisualRecognition.prototype.listClassifiers = function(params, callback) {
158159
* all classifiers.
159160
*/
160161
VisualRecognition.prototype.classify = function(params, callback) {
161-
params = params || {};
162+
var formData = extend(true, {}, params);
162163

163164
try {
164-
verifyStream(params.images_file, 'images_file');
165+
verifyStream(formData.images_file, 'images_file');
165166
} catch (e) {
166167
callback(e);
167168
return;
168169
}
169170

171+
// if is an array we wrap it in a `classifier_ids` element
172+
if (formData.classifier_ids && util.isArray(formData.classifier_ids))
173+
formData.classifier_ids = JSON.stringify(pick(formData,['classifier_ids']));
174+
170175
var parameters = {
171176
options: {
172177
url: '/v2/classify',
173178
method: 'POST',
174179
json: true,
175-
formData: pick(params, ['images_file', 'classifier_ids'])
180+
formData: pick(formData, ['images_file', 'classifier_ids'])
176181
},
177182
defaultOptions: this._options
178183
};

test/test.integration-all-services.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ describe('integration-all-services', function() {
111111
it('classify()', function(done) {
112112
var params = {
113113
images_file: fs.createReadStream(__dirname + '/resources/car.png'),
114+
classifier_ids: ['Red','Car']
114115
};
115116
visual_recognition.listClassifiers(params, failIfError.bind(failIfError, done));
116117
});

test/test.visual_recognition.v2-beta.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ describe('visual_recognition', function() {
2424
var fake_file = fs.createReadStream(__dirname + '/resources/car.png');
2525
var service_request = {
2626
images_file: fake_file,
27-
classifier_ids: ['foo', 'bar']
27+
classifier_ids: {
28+
classifier_ids: ['foo', 'bar']
29+
}
2830
};
2931

3032
var classify_path = '/v2/classify?' + version_qs;
@@ -117,11 +119,16 @@ describe('visual_recognition', function() {
117119
});
118120

119121
it('should generate a valid payload', function() {
120-
var req = visual_recognition.classify(service_request, noop);
122+
var params = {
123+
images_file: fake_file,
124+
classifier_ids: ['foo','bar']
125+
};
126+
127+
var req = visual_recognition.classify(params, noop);
121128
assert.equal(req.uri.href, service.url + classify_path);
122129
assert.equal(req.method, 'POST');
123-
assert.equal(req.formData.images_file.path, __dirname + '/resources/car.png');
124-
assert.deepEqual(req.formData.classifier_ids, service_request.classifier_ids);
130+
assert.equal(req.formData.images_file.path, fake_file.path);
131+
assert.equal(req.formData.classifier_ids, JSON.stringify(service_request.classifier_ids));
125132
});
126133
});
127134

@@ -143,12 +150,11 @@ describe('visual_recognition', function() {
143150
});
144151

145152
it('should generate a valid payload with streams', function() {
146-
var fake_file = fs.createReadStream(__dirname + '/resources/car.png'),
147-
params = {
148-
positive_examples: fake_file,
149-
negative_examples: fake_file,
150-
name: 'test-c'
151-
};
153+
var params = {
154+
positive_examples: fake_file,
155+
negative_examples: fake_file,
156+
name: 'test-c'
157+
};
152158

153159
var req = visual_recognition.createClassifier(params, noop);
154160
assert.equal(req.uri.href, service.url + classifiers_path);

0 commit comments

Comments
 (0)