Class: Selenium::WebDriver::Proxy

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium/webdriver/common/proxy.rb

Constant Summary collapse

TYPES =
{
  direct: 'DIRECT', # Direct connection, no proxy (default on Windows).
  manual: 'MANUAL', # Manual proxy settings (e.g., for httpProxy).
  pac: 'PAC', # Proxy autoconfiguration from URL.
  auto_detect: 'AUTODETECT', # Proxy autodetection (presumably with WPAD).
  system: 'SYSTEM' # Use system settings (default on Linux).
}.freeze
ALLOWED =
{type: 'proxyType',
ftp: 'ftpProxy',
http: 'httpProxy',
no_proxy: 'noProxy',
pac: 'proxyAutoconfigUrl',
ssl: 'sslProxy',
auto_detect: 'autodetect',
socks: 'socksProxy',
socks_username: 'socksUsername',
socks_password: 'socksPassword'}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Proxy

Returns a new instance of Proxy.

Raises:

  • (ArgumentError)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/selenium/webdriver/common/proxy.rb', line 57

def initialize(opts = {})
  not_allowed = []

  opts.each do |k, v|
    if ALLOWED.key?(k)
      send("#{k}=", v)
    else
      not_allowed << k
    end
  end

  return if not_allowed.empty?
  raise ArgumentError, "unknown option#{'s' if not_allowed.size != 1}: #{not_allowed.inspect}"
end

Class Method Details

.json_create(data) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/selenium/webdriver/common/proxy.rb', line 44

def self.json_create(data)
  data['proxyType'] = data['proxyType'].downcase.to_sym
  return if data['proxyType'] == :unspecified

  proxy = new

  ALLOWED.each do |k, v|
    proxy.send("#{k}=", data[v]) if data.key?(v)
  end

  proxy
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



72
73
74
# File 'lib/selenium/webdriver/common/proxy.rb', line 72

def ==(other)
  other.is_a?(self.class) && as_json == other.as_json
end

#as_jsonObject



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/selenium/webdriver/common/proxy.rb', line 134

def as_json(*)
  json_result = {
    'proxyType' => TYPES[type],
    'ftpProxy' => ftp,
    'httpProxy' => http,
    'noProxy' => no_proxy,
    'proxyAutoconfigUrl' => pac,
    'sslProxy' => ssl,
    'autodetect' => auto_detect,
    'socksProxy' => socks,
    'socksUsername' => socks_username,
    'socksPassword' => socks_password
  }.delete_if { |_k, v| v.nil? }

  json_result if json_result.length > 1
end

#auto_detect=(bool) ⇒ Object



102
103
104
105
# File 'lib/selenium/webdriver/common/proxy.rb', line 102

def auto_detect=(bool)
  self.type = :auto_detect
  @auto_detect = bool
end

#ftp=(value) ⇒ Object



77
78
79
80
# File 'lib/selenium/webdriver/common/proxy.rb', line 77

def ftp=(value)
  self.type = :manual
  @ftp = value
end

#http=(value) ⇒ Object



82
83
84
85
# File 'lib/selenium/webdriver/common/proxy.rb', line 82

def http=(value)
  self.type = :manual
  @http = value
end

#no_proxy=(value) ⇒ Object



87
88
89
90
# File 'lib/selenium/webdriver/common/proxy.rb', line 87

def no_proxy=(value)
  self.type = :manual
  @no_proxy = value
end

#pac=(url) ⇒ Object



97
98
99
100
# File 'lib/selenium/webdriver/common/proxy.rb', line 97

def pac=(url)
  self.type = :pac
  @pac = url
end

#socks=(value) ⇒ Object



107
108
109
110
# File 'lib/selenium/webdriver/common/proxy.rb', line 107

def socks=(value)
  self.type = :manual
  @socks = value
end

#socks_password=(value) ⇒ Object



117
118
119
120
# File 'lib/selenium/webdriver/common/proxy.rb', line 117

def socks_password=(value)
  self.type = :manual
  @socks_password = value
end

#socks_username=(value) ⇒ Object



112
113
114
115
# File 'lib/selenium/webdriver/common/proxy.rb', line 112

def socks_username=(value)
  self.type = :manual
  @socks_username = value
end

#ssl=(value) ⇒ Object



92
93
94
95
# File 'lib/selenium/webdriver/common/proxy.rb', line 92

def ssl=(value)
  self.type = :manual
  @ssl = value
end

#to_jsonObject



151
152
153
# File 'lib/selenium/webdriver/common/proxy.rb', line 151

def to_json(*)
  JSON.generate as_json
end

#type=(type) ⇒ Object



122
123
124
125
126
127
128
129
130
131
132
# File 'lib/selenium/webdriver/common/proxy.rb', line 122

def type=(type)
  unless TYPES.key? type
    raise ArgumentError, "invalid proxy type: #{type.inspect}, expected one of #{TYPES.keys.inspect}"
  end

  if defined?(@type) && type != @type
    raise ArgumentError, "incompatible proxy type #{type.inspect} (already set to #{@type.inspect})"
  end

  @type = type
end