11var fs = require ( 'fs' ) ;
2- var http = require ( 'http' ) ;
3- var qs = require ( 'querystring' ) ;
4- var path = require ( 'path' ) ;
52var request = require ( 'request' ) ;
63var celery = require ( 'node-celery' ) ;
74var requestretry = require ( 'requestretry' )
5+ const https = require ( 'https' ) ;
6+ const url = require ( 'url' ) ;
87
98var async = require ( 'async' )
10- var face_motion = require ( './face_motions' )
11- //var maintainer = require('./maintainer')
12- var mqtt_2_group = require ( './mqttgif' )
13- var timeline = require ( './timeline' )
149var upload = require ( './upload' )
1510var device_SN = null
1611
@@ -32,6 +27,12 @@ var REDIS_PORT = process.env.REDIS_PORT || 6379
3227var CLUSTER_REDIS_ADDRESS = process . env . CLUSTER_REDIS_ADDRESS || "redis"
3328var CLUSTER_REDIS_PORT = process . env . CLUSTER_REDIS_PORT || 6379
3429
30+ const SHARP_AI_TOKEN = process . env . SHARP_AI_TOKEN
31+ const SHARP_AI_USER_ID = process . env . SHARP_AI_USER_ID
32+ const SHARP_AI_USERNAME = process . env . SHARP_AI_USERNAME
33+ const API_SERVER_ADDRESS = process . env . API_SERVER_ADDRESS
34+ const API_SERVER_PORT = process . env . API_SERVER_PORT
35+
3536function GetEnvironmentVarInt ( varname , defaultvalue )
3637{
3738 var result = process . env [ varname ] ;
@@ -461,6 +462,22 @@ function post_recognition_result_to_api_server(json,accessUrl){
461462 }
462463 } ) ;
463464}
465+
466+ function check_quote_and_sign_url ( key , cb ) {
467+ const options = {
468+ method : 'POST' ,
469+ url : 'http://' + API_SERVER_ADDRESS + ':' + API_SERVER_PORT + '/api/v1/quote/upload' ,
470+ headers : {
471+ 'X-Auth-Token' : SHARP_AI_TOKEN ,
472+ 'X-User-Id' :SHARP_AI_USER_ID ,
473+ 'Content-type' : 'application/json'
474+ } ,
475+ json : true ,
476+ body :{ key :key }
477+ } ;
478+ request ( options , cb ) ;
479+ }
480+
464481function classify_task ( task_info , cb ) {
465482 if ( connected_to_celery_broker ) {
466483 client . call ( 'classify.classify' ,
@@ -483,12 +500,45 @@ function classify_task(task_info, cb) {
483500 json . result [ 'url' ] = task_info . url
484501 post_recognition_result_to_api_server ( json , task_info . url )
485502 } else {
486- json . result [ 'url' ] = upload . getAccessUrl ( json . result . key ) + '.png'
487- upload . putFile ( json . result . key + '.png' , task_info . path , function ( error , accessUrl ) {
488- ON_DEBUG && console . log ( 'error=' , error , 'accessUrl=' , accessUrl )
489- if ( ! error ) {
490- post_recognition_result_to_api_server ( json , accessUrl )
503+ check_quote_and_sign_url ( json . result . key + '.png' , function ( error , response , body ) {
504+ if ( ! error && response . statusCode == 200 ) {
505+ //const info = JSON.parse(body);
506+ ON_DEBUG && console . log ( 'server response: ' + body ) ;
507+ ON_DEBUG && console . log ( body ) ;
508+ const info = JSON . parse ( body ) ;
509+ ON_DEBUG && console . log ( info ) ;
510+
511+ var presigned = info . presigned ;
512+ var filename = task_info . path ;
513+ var stats = fs . statSync ( filename ) ;
514+ var file_size = stats . size ;
515+ var dataStream = fs . createReadStream ( filename ) ;
516+ var options = url . parse ( presigned ) ;
517+ options . method = 'PUT' ;
518+ options . headers = {
519+ 'Content-Length' : file_size ,
520+ 'Content-Type' : 'image/png'
521+ }
522+
523+ console . log ( options )
524+ const stream = https . request ( options ) ;
525+ stream . on ( 'response' , ( res ) => {
526+ console . log ( res . statusCode ) ;
527+ res . pipe ( process . stdout ) ;
528+
529+ console . log ( 'uploaded to ' + info . url )
530+ post_recognition_result_to_api_server ( json , info . url )
531+ } ) ;
532+
533+ dataStream . pipe ( stream ) ;
491534 }
535+ /*json.result['url'] = upload.getAccessUrl(json.result.key)+'.png'
536+ upload.putFile(json.result.key+'.png',task_info.path,function(error,accessUrl){
537+ ON_DEBUG && console.log('error=',error,'accessUrl=',accessUrl)
538+ if(!error){
539+ post_recognition_result_to_api_server(json,accessUrl)
540+ }
541+ })*/
492542 } )
493543 }
494544 delete json . result . key
0 commit comments