Package Mananger
[osm/UI.git] / skyquake / plugins / composer / api / packageFileHandler.js
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
17 function checkStatus(req, transactionId) {
18 var upload_server = req.query['upload_server'];
19 var headers = _.extend({},
20 {
21 'Authorization': req.get('Authorization')
22 }
23 );
24 request({
25 url: upload_server + ':' + constants.PACKAGE_MANAGER_SERVER_PORT + '/api/upload/' + transactionId + '/state',
26 type: 'GET',
27 headers: headers,
28 forever: constants.FOREVER_ON,
29 rejectUnauthorized: false
30 }, function(error, response, body) {
31 if (error) {
32 console.log('Error checking status for transaction', transactionId, '. Will delete file', req.file.filename, ' in ', constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS ,' milliseconds');
33 deleteFile(req.file.filename);
34 } else {
35 var jsonStatus = null;
36 if (typeof body == 'string' || body instanceof String) {
37 jsonStatus = JSON.parse(body);
38 } else {
39 jsonStatus = body;
40 }
41
42 if (jsonStatus.status && (jsonStatus.status == 'success' || jsonStatus.status == 'failure')) {
43 console.log('Transaction ', transactionId, ' completed with status ', jsonStatus.status ,'. Will delete file', req.file.filename, ' in ', constants.PACKAGE_FILE_DELETE_DELAY_MILLISECONDS ,' milliseconds');
44 deleteFile(req.file.filename);
45 } else {
46 setTimeout(function() {
47 checkStatus(req, transactionId);
48 }, constants.PACKAGE_FILE_ONBOARD_TRANSACTION_STATUS_CHECK_DELAY_MILLISECONDS);
49 }
50 }
51 });
52 };
53
54 PackageFileHandler.checkCreatePackageStatusAndHandleFile = function(req, transactionId) {
55 checkStatus(req, transactionId);
56 };
57
58
59 module.exports = PackageFileHandler;