Skip to content

Commit

Permalink
Change proxy to not depend on node util module (#2391)
Browse files Browse the repository at this point in the history
* change util.isArray to Array.isArray

* move proxy.js into lib
  • Loading branch information
oddui authored and jleyba committed Jun 29, 2016
1 parent 74c5a85 commit b824de0
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 75 deletions.
99 changes: 99 additions & 0 deletions javascript/node/selenium-webdriver/lib/proxy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

/**
* @fileoverview Defines functions for configuring a webdriver proxy:
*
* const Capabilities = require('./capabilities').Capabilities;
*
* var capabilities = new Capabilities();
* capabilities.setProxy(proxy.manual({http: 'host:1234'});
*/

'use strict';

var ProxyConfig = require('./capabilities').ProxyConfig;


// PUBLIC API


/**
* Configures WebDriver to bypass all browser proxies.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.direct = function() {
return {proxyType: 'direct'};
};


/**
* Manually configures the browser proxy. The following options are
* supported:
*
* - `ftp`: Proxy host to use for FTP requests
* - `http`: Proxy host to use for HTTP requests
* - `https`: Proxy host to use for HTTPS requests
* - `bypass`: A list of hosts requests should directly connect to,
* bypassing any other proxies for that request. May be specified as a
* comma separated string, or a list of strings.
*
* Behavior is undefined for FTP, HTTP, and HTTPS requests if the
* corresponding key is omitted from the configuration options.
*
* @param {{ftp: (string|undefined),
* http: (string|undefined),
* https: (string|undefined),
* bypass: (string|!Array.<string>|undefined)}} options Proxy
* configuration options.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.manual = function(options) {
// TODO(jleyba): Figure out why the Closure compiler does not think this is
// a ProxyConfig record without the cast.
return /** @type {!ProxyConfig} */({
proxyType: 'manual',
ftpProxy: options.ftp,
httpProxy: options.http,
sslProxy: options.https,
noProxy: Array.isArray(options.bypass) ?
options.bypass.join(',') : options.bypass
});
};


/**
* Configures WebDriver to configure the browser proxy using the PAC file at
* the given URL.
* @param {string} url URL for the PAC proxy to use.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.pac = function(url) {
return {
proxyType: 'pac',
proxyAutoconfigUrl: url
};
};


/**
* Configures WebDriver to use the current system's proxy.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.system = function() {
return {proxyType: 'system'};
};
77 changes: 2 additions & 75 deletions javascript/node/selenium-webdriver/proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
// under the License.

/**
* @fileoverview Defines functions for configuring a webdriver proxy:
* @fileoverview Proxy module alias.
*
* var webdriver = require('selenium-webdriver'),
* proxy = require('selenium-webdriver/proxy');
Expand All @@ -29,77 +29,4 @@

'use strict';

var util = require('util');

var ProxyConfig = require('./lib/capabilities').ProxyConfig;



// PUBLIC API


/**
* Configures WebDriver to bypass all browser proxies.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.direct = function() {
return {proxyType: 'direct'};
};


/**
* Manually configures the browser proxy. The following options are
* supported:
*
* - `ftp`: Proxy host to use for FTP requests
* - `http`: Proxy host to use for HTTP requests
* - `https`: Proxy host to use for HTTPS requests
* - `bypass`: A list of hosts requests should directly connect to,
* bypassing any other proxies for that request. May be specified as a
* comma separated string, or a list of strings.
*
* Behavior is undefined for FTP, HTTP, and HTTPS requests if the
* corresponding key is omitted from the configuration options.
*
* @param {{ftp: (string|undefined),
* http: (string|undefined),
* https: (string|undefined),
* bypass: (string|!Array.<string>|undefined)}} options Proxy
* configuration options.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.manual = function(options) {
// TODO(jleyba): Figure out why the Closure compiler does not think this is
// a ProxyConfig record without the cast.
return /** @type {!ProxyConfig} */({
proxyType: 'manual',
ftpProxy: options.ftp,
httpProxy: options.http,
sslProxy: options.https,
noProxy: util.isArray(options.bypass) ?
options.bypass.join(',') : options.bypass
});
};


/**
* Configures WebDriver to configure the browser proxy using the PAC file at
* the given URL.
* @param {string} url URL for the PAC proxy to use.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.pac = function(url) {
return {
proxyType: 'pac',
proxyAutoconfigUrl: url
};
};


/**
* Configures WebDriver to use the current system's proxy.
* @return {!ProxyConfig} A new proxy configuration object.
*/
exports.system = function() {
return {proxyType: 'system'};
};
module.exports = require('./lib/proxy');

0 comments on commit b824de0

Please sign in to comment.