diff --git a/browser/services/request.js b/browser/services/request.js index ffff676e..219fa903 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://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); + }); } 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;