Skip to content

Commit 4d140b5

Browse files
committed
rb - reduce method complexity
1 parent a870613 commit 4d140b5

File tree

4 files changed

+79
-78
lines changed

4 files changed

+79
-78
lines changed

rb/.rubocop.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,11 @@ Style/MutableConstant:
4242
# There shouldn't be any reason to use camel case instead of snake case here
4343
Style/MethodName:
4444
Enabled: false
45+
46+
# Refactor Chrome::Bridge#create_capabilities
47+
Metrics/PerceivedComplexity:
48+
Max: 16
49+
50+
# Refactor Chrome::Bridge#create_capabilities
51+
Metrics/CyclomaticComplexity:
52+
Max: 16

rb/.rubocop_todo.yml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# This configuration was generated by
22
# `rubocop --auto-gen-config`
3-
# on 2016-06-10 14:40:50 -0700 using RuboCop version 0.37.2.
3+
# on 2016-06-13 11:30:26 -0700 using RuboCop version 0.37.2.
44
# The point is for the user to remove these configuration records
55
# one by one as the offenses are removed from the code base.
66
# Note that changes in the inspected code, or installation of new
77
# versions of RuboCop, may require this file to be generated again.
88

9-
# Offense count: 41
9+
# Offense count: 39
1010
Metrics/AbcSize:
1111
Max: 53
1212

@@ -15,17 +15,13 @@ Metrics/AbcSize:
1515
Metrics/ClassLength:
1616
Max: 430
1717

18-
# Offense count: 24
19-
Metrics/CyclomaticComplexity:
20-
Max: 16
21-
22-
# Offense count: 637
18+
# Offense count: 623
2319
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
2420
# URISchemes: http, https
2521
Metrics/LineLength:
2622
Max: 321
2723

28-
# Offense count: 61
24+
# Offense count: 59
2925
# Configuration parameters: CountComments.
3026
Metrics/MethodLength:
3127
Max: 37
@@ -34,7 +30,3 @@ Metrics/MethodLength:
3430
# Configuration parameters: CountComments.
3531
Metrics/ModuleLength:
3632
Max: 238
37-
38-
# Offense count: 15
39-
Metrics/PerceivedComplexity:
40-
Max: 16

rb/lib/selenium/webdriver/common/proxy.rb

Lines changed: 50 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -21,40 +21,52 @@ module Selenium
2121
module WebDriver
2222
class Proxy
2323
TYPES = {
24-
direct: 'DIRECT', # Direct connection, no proxy (default on Windows).
25-
manual: 'MANUAL', # Manual proxy settings (e.g., for httpProxy).
24+
direct: 'DIRECT', # Direct connection, no proxy (default on Windows).
25+
manual: 'MANUAL', # Manual proxy settings (e.g., for httpProxy).
2626
pac: 'PAC', # Proxy autoconfiguration from URL.
2727
auto_detect: 'AUTODETECT', # Proxy autodetection (presumably with WPAD).
2828
system: 'SYSTEM' # Use system settings (default on Linux).
2929
}.freeze
3030

31-
attr_reader :type,
32-
:ftp,
33-
:http,
34-
:socks,
35-
:socks_username,
36-
:socks_password,
37-
:no_proxy,
38-
:pac,
39-
:ssl,
40-
:auto_detect
31+
ALLOWED = {type: 'proxyType',
32+
ftp: 'ftpProxy',
33+
http: 'httpProxy',
34+
no_proxy: 'noProxy',
35+
pac: 'proxyAutoconfigUrl',
36+
ssl: 'sslProxy',
37+
auto_detect: 'autodetect',
38+
socks: 'socksProxy',
39+
socks_username: 'socksUsername',
40+
socks_password: 'socksPassword'}.freeze
41+
42+
ALLOWED.keys.each { |t| attr_reader t }
43+
44+
def self.json_create(data)
45+
data['proxyType'] = data['proxyType'].downcase.to_sym
46+
return if data['proxyType'] == :unspecified
47+
48+
proxy = new
49+
50+
ALLOWED.each do |k, v|
51+
proxy.send("#{k}=", data[v]) if data.key?(v)
52+
end
53+
54+
proxy
55+
end
4156

4257
def initialize(opts = {})
43-
opts = opts.dup
44-
45-
self.type = opts.delete(:type) if opts.key? :type
46-
self.ftp = opts.delete(:ftp) if opts.key? :ftp
47-
self.http = opts.delete(:http) if opts.key? :http
48-
self.no_proxy = opts.delete(:no_proxy) if opts.key? :no_proxy
49-
self.ssl = opts.delete(:ssl) if opts.key? :ssl
50-
self.pac = opts.delete(:pac) if opts.key? :pac
51-
self.auto_detect = opts.delete(:auto_detect) if opts.key? :auto_detect
52-
self.socks = opts.delete(:socks) if opts.key? :socks
53-
self.socks_username = opts.delete(:socks_username) if opts.key? :socks_username
54-
self.socks_password = opts.delete(:socks_password) if opts.key? :socks_password
55-
56-
return if opts.empty?
57-
raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}"
58+
not_allowed = []
59+
60+
opts.each do |k, v|
61+
if ALLOWED.key?(k)
62+
send("#{k}=", v)
63+
else
64+
not_allowed << k
65+
end
66+
end
67+
68+
return if not_allowed.empty?
69+
raise ArgumentError, "unknown option#{'s' if not_allowed.size != 1}: #{not_allowed.inspect}"
5870
end
5971

6072
def ==(other)
@@ -121,46 +133,24 @@ def type=(type)
121133

122134
def as_json(*)
123135
json_result = {
124-
'proxyType' => TYPES[type]
125-
}
126-
127-
json_result['ftpProxy'] = ftp if ftp
128-
json_result['httpProxy'] = http if http
129-
json_result['noProxy'] = no_proxy if no_proxy
130-
json_result['proxyAutoconfigUrl'] = pac if pac
131-
json_result['sslProxy'] = ssl if ssl
132-
json_result['autodetect'] = auto_detect if auto_detect
133-
json_result['socksProxy'] = socks if socks
134-
json_result['socksUsername'] = socks_username if socks_username
135-
json_result['socksPassword'] = socks_password if socks_password
136+
'proxyType' => TYPES[type],
137+
'ftpProxy' => ftp,
138+
'httpProxy' => http,
139+
'noProxy' => no_proxy,
140+
'proxyAutoconfigUrl' => pac,
141+
'sslProxy' => ssl,
142+
'autodetect' => auto_detect,
143+
'socksProxy' => socks,
144+
'socksUsername' => socks_username,
145+
'socksPassword' => socks_password
146+
}.delete_if { |_k, v| v.nil? }
136147

137148
json_result if json_result.length > 1
138149
end
139150

140151
def to_json(*)
141152
JSON.generate as_json
142153
end
143-
144-
class << self
145-
def json_create(data)
146-
return if data['proxyType'] == 'UNSPECIFIED'
147-
148-
proxy = new
149-
150-
proxy.type = data['proxyType'].downcase.to_sym if data.key? 'proxyType'
151-
proxy.ftp = data['ftpProxy'] if data.key? 'ftpProxy'
152-
proxy.http = data['httpProxy'] if data.key? 'httpProxy'
153-
proxy.no_proxy = data['noProxy'] if data.key? 'noProxy'
154-
proxy.pac = data['proxyAutoconfigUrl'] if data.key? 'proxyAutoconfigUrl'
155-
proxy.ssl = data['sslProxy'] if data.key? 'sslProxy'
156-
proxy.auto_detect = data['autodetect'] if data.key? 'autodetect'
157-
proxy.socks = data['socksProxy'] if data.key? 'socksProxy'
158-
proxy.socks_username = data['socksUsername'] if data.key? 'socksUsername'
159-
proxy.socks_password = data['socksPassword'] if data.key? 'socksPassword'
160-
161-
proxy
162-
end
163-
end # class << self
164154
end # Proxy
165155
end # WebDriver
166156
end # Selenium

rb/lib/selenium/webdriver/remote/w3c_capabilities.rb

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ class W3CCapabilities
4444
:device
4545
].freeze
4646

47+
ALLOWED = {type: 'proxyType',
48+
ftp: 'ftpProxy',
49+
http: 'httpProxy',
50+
no_proxy: 'noProxy',
51+
pac: 'proxyAutoconfigUrl',
52+
ssl: 'sslProxy',
53+
auto_detect: 'autodetect',
54+
socks: 'socksProxy',
55+
socks_username: 'socksUsername',
56+
socks_password: 'socksPassword'}.freeze
57+
4758
(DEFAULTS.keys + KNOWN).each do |key|
4859
define_method key do
4960
@capabilities.fetch(key)
@@ -103,12 +114,12 @@ def json_create(data)
103114
data['platformName'] = data.delete('platform') if data.key? 'platform'
104115

105116
caps = new
106-
caps.browser_name = data.delete('browserName') if data.key? 'browserName'
107-
caps.browser_version = data.delete('browserVersion') if data.key? 'browserVersion'
108-
caps.platform_name = data.delete('platformName') if data.key? 'platformName'
109-
caps.platform_version = data.delete('platformVersion') if data.key? 'platformVersion'
110-
caps.accept_ssl_certs = data.delete('acceptSslCerts') if data.key? 'acceptSslCerts'
111-
caps.page_load_strategy = data.delete('pageLoadStrategy') if data.key? 'pageloadStrategy'
117+
caps.browser_name = data.delete('browserName')
118+
caps.browser_version = data.delete('browserVersion')
119+
caps.platform_name = data.delete('platformName')
120+
caps.platform_version = data.delete('platformVersion')
121+
caps.accept_ssl_certs = data.delete('acceptSslCerts')
122+
caps.page_load_strategy = data.delete('pageLoadStrategy')
112123
proxy = data.delete('proxy')
113124
caps.proxy = Proxy.json_create(proxy) unless proxy.nil? || proxy.empty?
114125

0 commit comments

Comments
 (0)