blob: cc9cca7c3a5fc472f56751bb94dc5f76cc666670 [file] [log] [blame]
Laurence Maultsbyb0660712017-01-06 16:01:19 +00001var request = require('request');
2var Promise = require('bluebird');
3var rp = require('request-promise');
4var utils = require('../../../framework/core/api_utils/utils.js');
5var constants = require('../../../framework/core/api_utils/constants.js');
6var fs = require('fs');
7var _ = require('lodash');
8
9PackageFileHandler = {};
10
11function deleteFile(filename) {
12 setTimeout(function() {
13 fs.unlinkSync(constants.BASE_PACKAGE_UPLOAD_DESTINATION + filename);
14 }, constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS);
15};
16
Laurence Maultsbye4df6862017-01-17 09:37:31 -050017function checkStatus(req, transactionId, isUpdate) {
Laurence Maultsbyb0660712017-01-06 16:01:19 +000018 var upload_server = req.query['upload_server'];
19 var headers = _.extend({},
20 {
21 'Authorization': req.get('Authorization')
22 }
23 );
Laurence Maultsbye4df6862017-01-17 09:37:31 -050024 var type = isUpdate ? 'update' : 'upload';
Laurence Maultsbyb0660712017-01-06 16:01:19 +000025 request({
Laurence Maultsbye4df6862017-01-17 09:37:31 -050026 url: upload_server + ':' + constants.PACKAGE_MANAGER_SERVER_PORT + '/api/' + type + '/' + transactionId + '/state',
Laurence Maultsbyb0660712017-01-06 16:01:19 +000027 type: 'GET',
28 headers: headers,
29 forever: constants.FOREVER_ON,
30 rejectUnauthorized: false
31 }, function(error, response, body) {
32 if (error) {
33 console.log('Error checking status for transaction', transactionId, '. Will delete file', req.file.filename, ' in ', constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS ,' milliseconds');
34 deleteFile(req.file.filename);
35 } else {
36 var jsonStatus = null;
37 if (typeof body == 'string' || body instanceof String) {
38 jsonStatus = JSON.parse(body);
39 } else {
40 jsonStatus = body;
41 }
42
43 if (jsonStatus.status && (jsonStatus.status == 'success' || jsonStatus.status == 'failure')) {
44 console.log('Transaction ', transactionId, ' completed with status ', jsonStatus.status ,'. Will delete file', req.file.filename, ' in ', constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS ,' milliseconds');
45 deleteFile(req.file.filename);
46 } else {
47 setTimeout(function() {
Laurence Maultsbye4df6862017-01-17 09:37:31 -050048 checkStatus(req, transactionId, isUpdate);
Laurence Maultsbyb0660712017-01-06 16:01:19 +000049 }, constants.PACKAGE_FILE_ONBOARD_TRANSACTION_STATUS_CHECK_DELAY_MILLISECONDS);
50 }
51 }
52 });
53};
54
Laurence Maultsbye4df6862017-01-17 09:37:31 -050055PackageFileHandler.checkCreatePackageStatusAndHandleFile = function(req, transactionId, isUpdate) {
56 checkStatus(req, transactionId, isUpdate);
Laurence Maultsbyb0660712017-01-06 16:01:19 +000057};
58
59
Laurence Maultsbye4df6862017-01-17 09:37:31 -050060module.exports = PackageFileHandler;