Skip to content

Commit

Permalink
Internal optimisations..
Browse files Browse the repository at this point in the history
  • Loading branch information
apnex committed Aug 29, 2018
1 parent 09ba66d commit babfb63
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 31 deletions.
4 changes: 3 additions & 1 deletion lib/get-file.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@ self.getFile = function(url, file) {
];

//temp fix for request.js buffer overflow bug
/*
var rq = require('request');
var FileCookieStore = require('tough-cookie-filestore');
self.request = rq.defaults({
'jar': rq.jar(new FileCookieStore(process.env.VMWSTATEDIR + '/cookies.json'))
'jar': rq.jar(new FileCookieStore('./cookies.json'))
});
*/
// temp fix for request.js buffer overflow bug

self.request.get({
Expand Down
47 changes: 24 additions & 23 deletions lib/get-index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ var fs = require('fs');
var FileCookieStore = require('tough-cookie-filestore');
var Session = require('./utils.js').session;
var rq = require('request');
var rp = require('request-promise');
var self = myVmw.prototype;

// myvmw constructor
Expand All @@ -15,33 +14,35 @@ function myVmw(opt) {
if(!fs.existsSync(self.cookie)) {
fs.writeFileSync(self.cookie, '');
}
self.request = rp.defaults({
self.request = rq.defaults({
'jar': rq.jar(new FileCookieStore(self.cookie))
});
}
module.exports = myVmw;

// login to my.vmware.com and generate cookies.txt
self.login = async function() {
let url = 'https://my.vmware.com';
console.log('Synching delicious cookies from [' + url + ']');
return self.request.get({url}).then(function(data) { // add error handling?
let url = 'https://my.vmware.com/oam/server/auth_cred_submit';
console.log('Offering up afforementioned snacks as a sacrifice to [' + url + ']');
let options = {
url,
followAllRedirects: true,
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
form: {
username: self.username,
password: self.password,
vmware: 'login'
}
};
return self.request.post(options, function (data) {
//console.log(JSON.stringify(this, null, "\t"));
self.login = function() {
return new Promise(function(resolve, reject) {
let url = 'https://my.vmware.com';
console.log('Synching delicious cookies from [' + url + ']');
self.request.get({url}, (err, resp, data) => {
let url = 'https://my.vmware.com/oam/server/auth_cred_submit';
console.log('Offering up afforementioned snacks as a sacrifice to [' + url + ']');
let options = {
url,
followAllRedirects: true,
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
form: {
username: self.username,
password: self.password,
vmware: 'login'
}
};
self.request.post(options, (err, resp, data) => {
resolve();
});
});
});
};
Expand All @@ -57,7 +58,7 @@ self.index = function() { // compare promise vs async
'p_p_resource_id': 'productsAtoZ'
});
console.log('Pulling landing index.json [' + base + ']');
self.request.get({url}).then(function(data) {
self.request.get({url}, (err, resp, data) => {
resolve(JSON.parse(data))
});
});
Expand Down
7 changes: 6 additions & 1 deletion lib/get-product.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,12 @@ function indexProduct(p, fileData = {}, name = p.name) {
let url = 'https://my.vmware.com/group/vmware/details?downloadGroup=' + p.name + '&productId=' + p.id;
queue.add(() => {
console.log('[FETCH]: ' + url);
return self.request.get({url});
return new Promise(function(resolve, reject) {
self.request.get({url}, (err, resp, data) => {
resolve(data)
});
});

}).then((data) => {
fileData[p.name] = ef.getFiles(data);
if(queue.size === 0 && queue.pending === 0) {
Expand Down
9 changes: 4 additions & 5 deletions lib/vmw-api.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/usr/bin/env node
const args = process.argv;
const request = require('request'); // see if this can be removed
const getFile = require('./get-file.js');
const getProduct = require('./get-product.js');
const getIndex = require('./get-index.js');
Expand Down Expand Up @@ -45,7 +44,9 @@ self.loadMain = function() { // merge with session?
if(fs.existsSync(mainIndex)) {
resolve(require(mainIndex));
} else {
const request = require('request'); // see if this can be moved to get-file
let client = new getFile({request});
//let client = new getFile();
let url = 'https://raw.githubusercontent.com/apnex/vmw-cli/master/mainIndex.json';
client.getFile(url, mainIndex).then((md5) => {
resolve(require(mainIndex));
Expand Down Expand Up @@ -144,6 +145,7 @@ self.login = async function(opts) {
await indexSession.data();
self.request = myvmw.request;
return myvmw.request;
//return;
} else {
console.log('[ERROR]: environment variables $VMWUSER and $VMWPASS not set! Please configure');
return;
Expand All @@ -153,7 +155,7 @@ self.login = async function(opts) {
// verify login credentials, session, and download fileName
self.get = function(productGroup, fileName) {
if(username && password) {
self.login({username, password}).then(function(request) {
self.login({username, password}).then(() => {
let index = require(fileIndex);
let fileNode = index[productGroup]['files'][fileName];
if(fileNode.download) {
Expand All @@ -172,7 +174,6 @@ self.get = function(productGroup, fileName) {
self.getDownload = function(url, md5remote) {
self.request.get({url}, function (error, response, body) {
let file = JSON.parse(body);
//console.log(decodeURIComponent(file.downloadUrl));
let client = new getFile({
request: self.request
});
Expand Down Expand Up @@ -208,8 +209,6 @@ self.getUrl = function(fileNode) {

// testing
params['hashKey'] = 1;
//params['uuId'] = '2549fd40-53b9-4c8a-8733-89e7cfdfc417'; //esx65
//params['uuId'] = '2243e90b-fb44-4ca9-ac85-9805afe1235d'; //esx67

let base = 'https://my.vmware.com/group/vmware/details';
let dlgUrl = this.buildUrl(base, Object.assign({
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vmw-cli",
"version": "1.1.9",
"version": "1.1.10",
"description": "CLI interface for my.vmware.com",
"license": "MIT",
"repository": "apnex/vmw-cli",
Expand Down

0 comments on commit babfb63

Please sign in to comment.