Class: Ferrum::Network::InterceptedRequest

Inherits:
Object
  • Object
show all
Includes:
RequestParams
Defined in:
lib/ferrum/network/intercepted_request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RequestParams

#headers, #method, #post_data, #url, #url_fragment

Constructor Details

#initialize(client, params) ⇒ InterceptedRequest

Returns a new instance of InterceptedRequest.



13
14
15
16
17
18
19
20
21
22
# File 'lib/ferrum/network/intercepted_request.rb', line 13

def initialize(client, params)
  @status = nil
  @client = client
  @params = params
  @request_id = params["requestId"]
  @frame_id = params["frameId"]
  @resource_type = params["resourceType"]
  @request = params["request"]
  @network_id = params["networkId"]
end

Instance Attribute Details

#frame_idObject

Returns the value of attribute frame_id.



11
12
13
# File 'lib/ferrum/network/intercepted_request.rb', line 11

def frame_id
  @frame_id
end

#network_idObject

Returns the value of attribute network_id.



11
12
13
# File 'lib/ferrum/network/intercepted_request.rb', line 11

def network_id
  @network_id
end

#request_idObject

Returns the value of attribute request_id.



11
12
13
# File 'lib/ferrum/network/intercepted_request.rb', line 11

def request_id
  @request_id
end

#resource_typeObject

Returns the value of attribute resource_type.



11
12
13
# File 'lib/ferrum/network/intercepted_request.rb', line 11

def resource_type
  @resource_type
end

#statusObject

Returns the value of attribute status.



11
12
13
# File 'lib/ferrum/network/intercepted_request.rb', line 11

def status
  @status
end

Instance Method Details

#abortObject



55
56
57
58
# File 'lib/ferrum/network/intercepted_request.rb', line 55

def abort
  @status = :aborted
  @client.command("Fetch.failRequest", async: true, requestId: request_id, errorReason: "BlockedByClient")
end

#continue(**options) ⇒ Object



49
50
51
52
53
# File 'lib/ferrum/network/intercepted_request.rb', line 49

def continue(**options)
  options = options.merge(requestId: request_id)
  @status = :continued
  @client.command("Fetch.continueRequest", async: true, **options)
end

#initial_priorityObject



60
61
62
# File 'lib/ferrum/network/intercepted_request.rb', line 60

def initial_priority
  @request["initialPriority"]
end

#inspectObject



68
69
70
71
72
73
74
# File 'lib/ferrum/network/intercepted_request.rb', line 68

def inspect
  "#<#{self.class} " \
    "@request_id=#{@request_id.inspect} " \
    "@frame_id=#{@frame_id.inspect} " \
    "@resource_type=#{@resource_type.inspect} " \
    "@request=#{@request.inspect}>"
end

#match?(regexp) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/ferrum/network/intercepted_request.rb', line 32

def match?(regexp)
  !!url.match(regexp)
end

Returns:

  • (Boolean)


28
29
30
# File 'lib/ferrum/network/intercepted_request.rb', line 28

def navigation_request?
  @params["isNavigationRequest"]
end

#referrer_policyObject



64
65
66
# File 'lib/ferrum/network/intercepted_request.rb', line 64

def referrer_policy
  @request["referrerPolicy"]
end

#respond(**options) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ferrum/network/intercepted_request.rb', line 36

def respond(**options)
  has_body = options.key?(:body)
  headers = has_body ? { "content-length" => options.fetch(:body, "").length } : {}
  headers = headers.merge(options.fetch(:responseHeaders, {}))

  options = { responseCode: 200 }.merge(options)
  options = options.merge(requestId: request_id, responseHeaders: header_array(headers))
  options = options.merge(body: Base64.strict_encode64(options.fetch(:body, ""))) if has_body

  @status = :responded
  @client.command("Fetch.fulfillRequest", async: true, **options)
end

#status?(value) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/ferrum/network/intercepted_request.rb', line 24

def status?(value)
  @status == value.to_sym
end