| Laurence Maultsby | b066071 | 2017-01-06 16:01:19 +0000 | [diff] [blame] | 1 | var request = require('request'); |
| 2 | var Promise = require('bluebird'); |
| 3 | var rp = require('request-promise'); |
| 4 | var utils = require('../../../framework/core/api_utils/utils.js'); |
| 5 | var constants = require('../../../framework/core/api_utils/constants.js'); |
| 6 | var fs = require('fs'); |
| 7 | var _ = require('lodash'); |
| 8 | |
| 9 | PackageFileHandler = {}; |
| 10 | |
| 11 | function deleteFile(filename) { |
| 12 | setTimeout(function() { |
| 13 | fs.unlinkSync(constants.BASE_PACKAGE_UPLOAD_DESTINATION + filename); |
| 14 | }, constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS); |
| 15 | }; |
| 16 | |
| Laurence Maultsby | e4df686 | 2017-01-17 09:37:31 -0500 | [diff] [blame] | 17 | function checkStatus(req, transactionId, isUpdate) { |
| Laurence Maultsby | b066071 | 2017-01-06 16:01:19 +0000 | [diff] [blame] | 18 | var upload_server = req.query['upload_server']; |
| 19 | var headers = _.extend({}, |
| 20 | { |
| 21 | 'Authorization': req.get('Authorization') |
| 22 | } |
| 23 | ); |
| Laurence Maultsby | e4df686 | 2017-01-17 09:37:31 -0500 | [diff] [blame] | 24 | var type = isUpdate ? 'update' : 'upload'; |
| Laurence Maultsby | b066071 | 2017-01-06 16:01:19 +0000 | [diff] [blame] | 25 | request({ |
| Laurence Maultsby | e4df686 | 2017-01-17 09:37:31 -0500 | [diff] [blame] | 26 | url: upload_server + ':' + constants.PACKAGE_MANAGER_SERVER_PORT + '/api/' + type + '/' + transactionId + '/state', |
| Laurence Maultsby | b066071 | 2017-01-06 16:01:19 +0000 | [diff] [blame] | 27 | 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 Maultsby | e4df686 | 2017-01-17 09:37:31 -0500 | [diff] [blame] | 48 | checkStatus(req, transactionId, isUpdate); |
| Laurence Maultsby | b066071 | 2017-01-06 16:01:19 +0000 | [diff] [blame] | 49 | }, constants.PACKAGE_FILE_ONBOARD_TRANSACTION_STATUS_CHECK_DELAY_MILLISECONDS); |
| 50 | } |
| 51 | } |
| 52 | }); |
| 53 | }; |
| 54 | |
| Laurence Maultsby | e4df686 | 2017-01-17 09:37:31 -0500 | [diff] [blame] | 55 | PackageFileHandler.checkCreatePackageStatusAndHandleFile = function(req, transactionId, isUpdate) { |
| 56 | checkStatus(req, transactionId, isUpdate); |
| Laurence Maultsby | b066071 | 2017-01-06 16:01:19 +0000 | [diff] [blame] | 57 | }; |
| 58 | |
| 59 | |
| Laurence Maultsby | e4df686 | 2017-01-17 09:37:31 -0500 | [diff] [blame] | 60 | module.exports = PackageFileHandler; |