From 00eafb4000d37f3f45bd1ab808fc3e6eeeda7a2c Mon Sep 17 00:00:00 2001 From: Denis Golovin Date: Wed, 25 Apr 2018 23:31:18 -0700 Subject: [PATCH 1/2] Simple proxy detection support --- browser/services/request.js | 81 ++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/browser/services/request.js b/browser/services/request.js index ffff676e..a93159bc 100644 --- a/browser/services/request.js +++ b/browser/services/request.js @@ -1,8 +1,9 @@ 'use strict'; class Request { - constructor(requestMod, $window) { + constructor(requestMod, $window, electron ) { this.request = requestMod; + this.electron = electron; this.userAgentString = $window.navigator.userAgent; if(process.env.DSI_TEST_AGENT && this.userAgentString) { this.userAgentString = $window.navigator.userAgent.replace("Installer", "TestInstaller"); @@ -10,49 +11,65 @@ class Request { } get(req) { - return new Promise((resolve, reject)=>{ - let options; - if (req instanceof Object) { - options = req; + return new Promise((resolve)=> { + if(this.electron) { + this.electron.remote.getCurrentWindow().webContents.session.resolveProxy("https://google.com", function(p){ + //parse PROXY XXX.XXX.XXX.XXX:XXXX; + let proxy = p.replace(/(PROXY|DIRECT)/g,'').replace(/;/g,'').replace(/ /g,''); + resolve(proxy.length > 0 ? `http://${proxy}`: undefined); + console.log(proxy); + }); } else { - options = { - url: req - }; + resolve(); } - if(options.headers === undefined) { - options.headers = {}; - } - options.headers['User-Agent'] = this.userAgentString; - - this.request(options, (error, response, data) => { - if (error) { - reject(error); - } else if(response.statusCode == 200) { - resolve({ - status: response.statusCode, - data: JSON.parse(data) - }); - } else if (response.statusCode == 401) { - resolve({ - status: response.statusCode, - data: data - }); + }).then((proxy)=> { + return new Promise((resolve, reject)=>{ + let options; + if (req instanceof Object) { + options = req; } else { - resolve({ - status: response.statusCode - }); + options = { + url: req + }; + } + if(options.headers === undefined) { + options.headers = {}; } + if(proxy) { + options.proxy = proxy; + } + options.headers['User-Agent'] = this.userAgentString; + + this.request(options, (error, response, data) => { + if (error) { + reject(error); + } else if(response.statusCode == 200) { + resolve({ + status: response.statusCode, + data: JSON.parse(data) + }); + } else if (response.statusCode == 401) { + resolve({ + status: response.statusCode, + data: data + }); + } else { + resolve({ + status: response.statusCode + }); + } + }); }); }); } - static factory(requestMod, $window) { + static factory(requestMod, $window, electron) { return function(req) { - return new Request(requestMod, $window).get(req); + return new Request(requestMod, $window, electron).get(req); }; } } -Request.factory.$inject=['requestMod', '$window']; +Request.factory.$inject=['requestMod', '$window', 'electron']; export default Request; From b30c98a498f7b202a605268a5a4f0a0e71877316 Mon Sep 17 00:00:00 2001 From: Denis Golovin Date: Thu, 26 Apr 2018 22:32:23 -0700 Subject: [PATCH 2/2] Join replace calls --- browser/services/request.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/browser/services/request.js b/browser/services/request.js index a93159bc..219fa903 100644 --- a/browser/services/request.js +++ b/browser/services/request.js @@ -13,9 +13,9 @@ class Request { get(req) { return new Promise((resolve)=> { if(this.electron) { - this.electron.remote.getCurrentWindow().webContents.session.resolveProxy("https://google.com", function(p){ - //parse PROXY XXX.XXX.XXX.XXX:XXXX; - let proxy = p.replace(/(PROXY|DIRECT)/g,'').replace(/;/g,'').replace(/ /g,''); + this.electron.remote.getCurrentWindow().webContents.session.resolveProxy("https://developers.redhat.com", function(p){ + //PROXY XXX.XXX.XXX.XXX:XXXX;DIRECT; + let proxy = p.replace(/(PROXY|DIRECT|;| )/g,''); resolve(proxy.length > 0 ? `http://${proxy}`: undefined); console.log(proxy); });