@@ -20,6 +20,7 @@ module.exports = function(RED) {
2020 { IamAuthenticator } = require ( 'ibm-watson/auth' ) ,
2121 FEATURE = 'image-feature' ,
2222 REQUIRED_PARAMS = {
23+ 'analyze' : [ 'collectionIds' ] ,
2324 'createCollection' : [ 'name' , 'description' ] ,
2425 'getCollection' : [ 'collectionId' ] ,
2526 'updateCollection' : [ 'collectionId' ] ,
@@ -28,7 +29,9 @@ module.exports = function(RED) {
2829 'listImages' : [ 'collectionId' ] ,
2930 'getImageDetails' : [ 'collectionId' , 'imageId' ] ,
3031 'deleteImage' : [ 'collectionId' , 'imageId' ] ,
31- 'getJpegImage' : [ 'collectionId' , 'imageId' ]
32+ 'getJpegImage' : [ 'collectionId' , 'imageId' ] ,
33+ 'train' : [ 'collectionId' ] ,
34+ 'addImageTrainingData' : [ 'collectionId' , 'imageId' , 'objects' ]
3235 } ;
3336
3437 var pkg = require ( '../../package.json' ) ,
@@ -114,7 +117,7 @@ module.exports = function(RED) {
114117 reject ( err ) ;
115118 } )
116119 }
117- } ) ;
120+ } ) ;
118121 }
119122
120123 function extractIDs ( body ) {
@@ -268,6 +271,7 @@ module.exports = function(RED) {
268271
269272 switch ( feature ) {
270273
274+ case 'analyze' :
271275 case 'createCollection' :
272276 case 'getCollection' :
273277 case 'updateCollection' :
@@ -277,6 +281,8 @@ module.exports = function(RED) {
277281 case 'getImageDetails' :
278282 case 'deleteImage' :
279283 case 'getJpegImage' :
284+ case 'train' :
285+ case 'addImageTrainingData' :
280286 theMissing = paramCheckFor ( REQUIRED_PARAMS [ feature ] , msg ) ;
281287 if ( theMissing . length === 0 ) {
282288 return Promise . resolve ( ) ;
@@ -286,6 +292,7 @@ module.exports = function(RED) {
286292
287293 case 'listCollections' :
288294 case 'deleteAllCollections' :
295+ case 'getTrainingUsage' :
289296 if ( ! msg . params ) {
290297 msg . params = { } ;
291298 }
@@ -296,6 +303,13 @@ module.exports = function(RED) {
296303 }
297304 }
298305
306+ function augmentParams ( node , msg ) {
307+ if ( 'analyze' === node . config [ FEATURE ] ) {
308+ msg . params . features = [ 'objects' ] ;
309+ }
310+ return Promise . resolve ( ) ;
311+ }
312+
299313 function bufferCheck ( data ) {
300314 return data instanceof Buffer ;
301315 }
@@ -335,9 +349,19 @@ module.exports = function(RED) {
335349 } ) ;
336350 }
337351
352+ function imagesExpected ( feature ) {
353+ switch ( feature ) {
354+ case 'addImages' :
355+ case 'analyze' :
356+ return true ;
357+ default :
358+ return false ;
359+ }
360+ }
361+
338362 function processPayload ( node , msg ) {
339363 return new Promise ( function resolver ( resolve , reject ) {
340- if ( 'addImages' !== node . config [ FEATURE ] ) {
364+ if ( ! imagesExpected ( node . config [ FEATURE ] ) ) {
341365 resolve ( ) ;
342366 } else if ( Array . isArray ( msg . payload ) ) {
343367 // Payload can be either an array of urls for images
@@ -374,8 +398,12 @@ module.exports = function(RED) {
374398 case 'getImageDetails' :
375399 case 'deleteImage' :
376400 case 'getJpegImage' :
401+ case 'train' :
402+ case 'addImageTrainingData' :
403+ case 'getTrainingUsage' :
377404 return Promise . resolve ( ) ;
378405 case 'addImages' :
406+ case 'analyze' :
379407 if ( ! msg . payload ) {
380408 return Promise . reject ( 'Missing property: msg.payload' ) ;
381409 }
@@ -408,6 +436,9 @@ module.exports = function(RED) {
408436 . then ( ( ) => {
409437 return verifyParams ( node , msg ) ;
410438 } )
439+ . then ( ( ) => {
440+ return augmentParams ( node , msg ) ;
441+ } )
411442 . then ( ( ) => {
412443 return processPayload ( node , msg ) ;
413444 } )
0 commit comments