jscrambler
Advanced tools
Comparing version 0.4.0 to 0.5.0
@@ -161,3 +161,3 @@ 'use strict'; | ||
var signedData; | ||
var options = {}; | ||
var options = {timeout: 0}; | ||
if (!params) params = {}; | ||
@@ -164,0 +164,0 @@ // If post sign data and set the request as multipart |
@@ -10,2 +10,3 @@ /** | ||
var fs = require('fs-extra'); | ||
var glob = require('glob'); | ||
var JScramblerClient = require('./jscrambler-client'); | ||
@@ -40,6 +41,13 @@ var JSZip = require('jszip'); | ||
client.get(path, null, function (err, res, body) { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(body); | ||
try { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(body); | ||
} catch (ex) { | ||
deferred.reject(body); | ||
} | ||
}); | ||
}) | ||
.fail(function () { | ||
deferred.reject.apply(null, arguments); | ||
}); | ||
@@ -53,8 +61,13 @@ return deferred.promise; | ||
*/ | ||
getInfo: function (client) { | ||
getInfo: function (client, projectId) { | ||
var deferred = Q.defer(); | ||
client.get('/code.json', null, function (err, res, body) { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(JSON.parse(body)); | ||
var path = projectId ? '/code/' + projectId + '.json' : '/code.json'; | ||
client.get(path, null, function (err, res, body) { | ||
try { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(JSON.parse(body)); | ||
} catch (ex) { | ||
deferred.reject(body); | ||
} | ||
}); | ||
@@ -70,16 +83,18 @@ return deferred.promise; | ||
this | ||
.getInfo(client) | ||
.getInfo(client, projectId) | ||
.then(function (res) { | ||
for (var i = 0, l = res.length; i < l; ++i) { | ||
// Find projectId inside the response | ||
if (res[i].id === projectId) { | ||
// Did it finish? | ||
if (res[i].finished_at) { | ||
deferred.resolve(); | ||
return; | ||
} | ||
// Did it finish? | ||
if (res.finished_at) { | ||
if (res.error_id && res.error_id !== '0') { | ||
deferred.reject(res); | ||
} else { | ||
deferred.resolve(); | ||
} | ||
return; | ||
} | ||
// Try again later... | ||
setTimeout(isFinished, 1000); | ||
}) | ||
.fail(function () { | ||
deferred.reject.apply(null, arguments); | ||
}); | ||
@@ -101,5 +116,9 @@ }.bind(this); | ||
this.cleanZipProject(); | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(JSON.parse(body)); | ||
try { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(JSON.parse(body)); | ||
} catch (ex) { | ||
deferred.reject(body); | ||
} | ||
}.bind(this)); | ||
@@ -117,5 +136,9 @@ return deferred.promise; | ||
client.delete('/code/' + projectId + '.zip', null, function (err, res, body) { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(JSON.parse(body)); | ||
try { | ||
if (err) deferred.reject(err); | ||
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body)); | ||
else deferred.resolve(JSON.parse(body)); | ||
} catch (ex) { | ||
deferred.reject(body); | ||
} | ||
}); | ||
@@ -125,2 +148,64 @@ return deferred.promise; | ||
/** | ||
* Common operation sequence intended when using the client. First it | ||
* uploads a project, then it polls the server to download and unzip the | ||
* project into a folder. | ||
* @param {String|Object} configPathOrObject | ||
* @returns {Q.promise} | ||
*/ | ||
process: function (configPathOrObject, destCallback) { | ||
var config = typeof configPathOrObject === 'string' ? | ||
require(configPathOrObject) : configPathOrObject; | ||
if (!config.keys || !config.keys.accessKey || !config.keys.secretKey) { | ||
throw new Exception('Access key and secret key must be provided in the configuration file.'); | ||
} | ||
var accessKey = config.keys.accessKey; | ||
var secretKey = config.keys.secretKey; | ||
var host = config.host; | ||
var port = config.port; | ||
var apiVersion = config.apiVersion; | ||
// Instance a JScrambler client | ||
var client = new this.Client({ | ||
accessKey: accessKey, | ||
secretKey: secretKey, | ||
host: host, | ||
port: port, | ||
apiVersion: apiVersion | ||
}); | ||
// Check for source files and add them to the parameters | ||
if (!config.filesSrc) { | ||
throw new Exception('Source files must be provided.'); | ||
} | ||
// Check if output directory was provided | ||
if (!config.filesDest && !destCallback) { | ||
throw new Exception('Output directory must be provided.'); | ||
} | ||
var filesSrc = []; | ||
for (var i = 0, l = config.filesSrc.length; i < l; ++i) { | ||
if (typeof config.filesSrc[i] === 'string') { | ||
filesSrc = filesSrc.concat(glob.sync(config.filesSrc[i])); | ||
} else { | ||
filesSrc.push(config.filesSrc[i]); | ||
} | ||
} | ||
// Prepare object to post | ||
var params = config.params || {}; | ||
params.files = filesSrc; | ||
var self = this; | ||
var projectId; | ||
return this | ||
.uploadCode(client, params) | ||
.then(function (res) { | ||
projectId = res.id; | ||
return self.downloadCode(client, res.id); | ||
}) | ||
.then(function (res) { | ||
return self.unzipProject(res, config.filesDest || destCallback); | ||
}) | ||
.then(function () { | ||
if (config.deleteProject) { | ||
return self.deleteCode(client, projectId); | ||
} | ||
}); | ||
}, | ||
/** | ||
* It cleans the temporary zip project. | ||
@@ -141,9 +226,13 @@ */ | ||
buffer = files[i].contents; | ||
} else { | ||
} else if (!fs.statSync(files[i]).isDirectory()) { | ||
name = files[i]; | ||
buffer = fs.readFileSync(files[i]); | ||
} else { | ||
zip.folder(files[i]); | ||
} | ||
zip.file(name, buffer); | ||
if (name) { | ||
zip.file(name, buffer); | ||
} | ||
} | ||
fs.outputFileSync('.tmp.zip', zip.generate(), {encoding: 'base64'}); | ||
fs.outputFileSync('.tmp.zip', zip.generate({type: 'nodebuffer'}), {encoding: 'base64'}); | ||
files[0] = '.tmp.zip'; | ||
@@ -150,0 +239,0 @@ files.length = 1; |
{ | ||
"name": "jscrambler", | ||
"description": "JScrambler API client.", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"homepage": "https://github.com/auditmark/node-jscrambler", | ||
@@ -6,0 +6,0 @@ "author": { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
23810
433
3