Skip to content

Commit 1aaa1c9

Browse files
committed
Refactor code to fix rubocop warns
1 parent 07d9168 commit 1aaa1c9

File tree

4 files changed

+74
-24
lines changed

4 files changed

+74
-24
lines changed

.rubocop.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ Style/MultilineBlockChain:
3232
Metrics/ModuleLength:
3333
Exclude:
3434
- spec/**/*
35+
36+
Metrics/ParameterLists:
37+
Max: 6

lib/ferrum/network.rb

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,34 @@ def authorize(user:, password:, type: :server, &block)
125125
end
126126

127127
def subscribe
128+
subscribe_request_will_be_sent
129+
subscribe_response_received
130+
subscribe_loading_finished
131+
subscribe_loading_failed
132+
subscribe_log_entry_added
133+
end
134+
135+
def authorized_response(ids, request_id, username, password)
136+
if ids.include?(request_id)
137+
{ response: "CancelAuth" }
138+
elsif username && password
139+
{ response: "ProvideCredentials",
140+
username: username,
141+
password: password }
142+
end
143+
end
144+
145+
def select(request_id)
146+
@traffic.select { |e| e.id == request_id }
147+
end
148+
149+
def build_exchange(id)
150+
Network::Exchange.new(@page, id).tap { |e| @traffic << e }
151+
end
152+
153+
private
154+
155+
def subscribe_request_will_be_sent
128156
@page.on("Network.requestWillBeSent") do |params|
129157
request = Network::Request.new(params)
130158

@@ -151,7 +179,9 @@ def subscribe
151179

152180
@exchange = exchange if exchange.navigation_request?(@page.main_frame.id)
153181
end
182+
end
154183

184+
def subscribe_response_received
155185
@page.on("Network.responseReceived") do |params|
156186
exchange = select(params["requestId"]).last
157187

@@ -160,12 +190,16 @@ def subscribe
160190
exchange.response = response
161191
end
162192
end
193+
end
163194

195+
def subscribe_loading_finished
164196
@page.on("Network.loadingFinished") do |params|
165197
exchange = select(params["requestId"]).last
166198
exchange.response.body_size = params["encodedDataLength"] if exchange&.response
167199
end
200+
end
168201

202+
def subscribe_loading_failed
169203
@page.on("Network.loadingFailed") do |params|
170204
exchange = select(params["requestId"]).last
171205
exchange.error ||= Network::Error.new
@@ -176,7 +210,9 @@ def subscribe
176210
exchange.error.monotonic_time = params["timestamp"]
177211
exchange.error.canceled = params["canceled"]
178212
end
213+
end
179214

215+
def subscribe_log_entry_added
180216
@page.on("Log.entryAdded") do |params|
181217
entry = params["entry"] || {}
182218
if entry["source"] == "network" && entry["level"] == "error"
@@ -191,28 +227,6 @@ def subscribe
191227
end
192228
end
193229

194-
def authorized_response(ids, request_id, username, password)
195-
if ids.include?(request_id)
196-
{ response: "CancelAuth" }
197-
elsif username && password
198-
{ response: "ProvideCredentials",
199-
username: username,
200-
password: password }
201-
else
202-
{ response: "CancelAuth" }
203-
end
204-
end
205-
206-
def select(request_id)
207-
@traffic.select { |e| e.id == request_id }
208-
end
209-
210-
def build_exchange(id)
211-
Network::Exchange.new(@page, id).tap { |e| @traffic << e }
212-
end
213-
214-
private
215-
216230
def blacklist_subscribe
217231
return unless blacklist?
218232
raise ArgumentError, "You can't use blacklist along with whitelist" if whitelist?

lib/ferrum/page.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,11 @@ def window_id
162162
@browser.command("Browser.getWindowForTarget", targetId: @target_id)["windowId"]
163163
end
164164

165+
# rubocop:disable Naming/AccessorMethodName
165166
def set_window_bounds(bounds = {})
166167
@browser.command("Browser.setWindowBounds", windowId: window_id, bounds: bounds)
167168
end
169+
# rubocop:enable Naming/AccessorMethodName
168170

169171
def command(method, wait: 0, slowmoable: false, **params)
170172
iteration = @event.reset if wait.positive?

lib/ferrum/page/frames.rb

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,47 @@ def frame_by(id: nil, name: nil, execution_id: nil)
2424
end
2525

2626
def frames_subscribe
27+
subscribe_frame_attached
28+
subscribe_frame_started_loading
29+
subscribe_frame_navigated
30+
subscribe_frame_stopped_loading
31+
32+
subscribe_navigated_within_document
33+
34+
subscribe_request_will_be_sent
35+
36+
subscribe_execution_context_created
37+
subscribe_execution_context_destroyed
38+
subscribe_execution_contexts_cleared
39+
end
40+
41+
private
42+
43+
def subscribe_frame_attached
2744
on("Page.frameAttached") do |params|
2845
parent_frame_id, frame_id = params.values_at("parentFrameId", "frameId")
2946
@frames[frame_id] = Frame.new(frame_id, self, parent_frame_id)
3047
end
48+
end
3149

50+
def subscribe_frame_started_loading
3251
on("Page.frameStartedLoading") do |params|
3352
frame = @frames[params["frameId"]]
3453
frame.state = :started_loading
3554
@event.reset
3655
end
56+
end
3757

58+
def subscribe_frame_navigated
3859
on("Page.frameNavigated") do |params|
3960
frame_id, name = params["frame"]&.values_at("id", "name")
4061
frame = @frames[frame_id]
4162
frame.state = :navigated
4263
frame.name = name unless name.to_s.empty?
4364
end
65+
end
4466

67+
def subscribe_frame_stopped_loading
4568
on("Page.frameStoppedLoading") do |params|
4669
# `DOM.performSearch` doesn't work without getting #document node first.
4770
# It returns node with nodeId 1 and nodeType 9 from which descend the
@@ -57,19 +80,25 @@ def frames_subscribe
5780

5881
@event.set if idling?
5982
end
83+
end
6084

85+
def subscribe_navigated_within_document
6186
on("Page.navigatedWithinDocument") do
6287
@event.set if idling?
6388
end
89+
end
6490

91+
def subscribe_request_will_be_sent
6592
on("Network.requestWillBeSent") do |params|
6693
# Possible types:
6794
# Document, Stylesheet, Image, Media, Font, Script, TextTrack, XHR,
6895
# Fetch, EventSource, WebSocket, Manifest, SignedExchange, Ping,
6996
# CSPViolationReport, Other
7097
@event.reset if params["frameId"] == @main_frame.id && params["type"] == "Document"
7198
end
99+
end
72100

101+
def subscribe_execution_context_created
73102
on("Runtime.executionContextCreated") do |params|
74103
context_id = params.dig("context", "id")
75104
frame_id = params.dig("context", "auxData", "frameId")
@@ -87,21 +116,23 @@ def frames_subscribe
87116

88117
@frames[frame_id] ||= frame
89118
end
119+
end
90120

121+
def subscribe_execution_context_destroyed
91122
on("Runtime.executionContextDestroyed") do |params|
92123
execution_id = params["executionContextId"]
93124
frame = frame_by(execution_id: execution_id)
94125
frame&.execution_id = nil
95126
end
127+
end
96128

129+
def subscribe_execution_contexts_cleared
97130
on("Runtime.executionContextsCleared") do
98131
@frames.delete_if { |_, f| !f.main? }
99132
@main_frame.execution_id = nil
100133
end
101134
end
102135

103-
private
104-
105136
def idling?
106137
@frames.all? { |_, f| f.state == :stopped_loading }
107138
end

0 commit comments

Comments
 (0)