This repository has been archived by the owner on Mar 22, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathproxy.js
100 lines (86 loc) · 2.88 KB
/
proxy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Copyright 2013 Selenium committers
//
// Licensed 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:
* <pre><code>
* var webdriver = require('browserstack-webdriver'),
* proxy = require('browserstack-webdriver/proxy');
*
* var driver = new webdriver.Builder()
* .withCapabilities(webdriver.Capabilities.chrome())
* .setProxy(proxy.manual({http: 'host:1234'}))
* .build();
* </code></pre>
*/
'use strict';
var util = require('util');
// PUBLIC API
/**
* Configures WebDriver to bypass all browser proxies.
* @return {!webdriver.ProxyConfig} A new proxy configuration object.
*/
exports.direct = function() {
return {proxyType: 'direct'};
};
/**
* Manually configures the browser proxy. The following options are
* supported:
* <ul>
* <li>{@code ftp}: Proxy host to use for FTP requests
* <li>{@code http}: Proxy host to use for HTTP requests
* <li>{@code https}: Proxy host to use for HTTPS requests
* <li>{@code 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.
* </ul>
*
* 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 {!webdriver.ProxyConfig} A new proxy configuration object.
*/
exports.manual = function(options) {
return {
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 {!webdriver.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 {!webdriver.ProxyConfig} A new proxy configuration object.
*/
exports.system = function() {
return {proxyType: 'system'};
};