Class: Puppeteer::NetworkManager

Inherits:
Object
  • Object
show all
Includes:
DebugPrint, EventCallbackable, IfPresent
Defined in:
lib/puppeteer/network_manager.rb

Defined Under Namespace

Classes: Credentials, InternalNetworkCondition, QueuedEventGroup, RedirectInfo

Instance Method Summary collapse

Methods included from IfPresent

#if_present

Methods included from EventCallbackable

#add_event_listener, #emit_event, #observe_first, #on_event, #remove_event_listener

Methods included from DebugPrint

#debug_print, #debug_puts

Constructor Details

#initialize(client, ignore_https_errors, frame_manager) ⇒ NetworkManager



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
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/puppeteer/network_manager.rb', line 75

def initialize(client, ignore_https_errors, frame_manager)
  @client = client
  @ignore_https_errors = ignore_https_errors
  @frame_manager = frame_manager
  @network_event_manager = Puppeteer::NetworkEventManager.new

  @extra_http_headers = {}

  @attempted_authentications = Set.new
  @user_request_interception_enabled = false
  @protocol_request_interception_enabled = false
  @user_cache_disabled = false
  @internal_network_condition = InternalNetworkCondition.new(@client)

  @client.on_event('Fetch.requestPaused') do |event|
    handle_request_paused(event)
  end
  @client.on_event('Fetch.authRequired') do |event|
    handle_auth_required(event)
  end
  @client.on_event('Network.requestWillBeSent') do |event|
    handle_request_will_be_sent(event)
  end
  @client.on_event('Network.requestServedFromCache') do |event|
    handle_request_served_from_cache(event)
  end
  @client.on_event('Network.responseReceived') do |event|
    handle_response_received(event)
  end
  @client.on_event('Network.loadingFinished') do |event|
    handle_loading_finished(event)
  end
  @client.on_event('Network.loadingFailed') do |event|
    handle_loading_failed(event)
  end
  @client.on_event('Network.responseReceivedExtraInfo') do |event|
    handle_response_received_extra_info(event)
  end
end

Instance Method Details

#authenticate(username:, password:) ⇒ Object



132
133
134
135
# File 'lib/puppeteer/network_manager.rb', line 132

def authenticate(username:, password:)
  @credentials = Credentials.new(username: username, password: password)
  update_protocol_request_interception
end

#cache_enabled=(enabled) ⇒ Object



179
180
181
182
# File 'lib/puppeteer/network_manager.rb', line 179

def cache_enabled=(enabled)
  @user_cache_disabled = !enabled
  update_protocol_cache_disabled
end

#emulate_network_conditions(network_condition) ⇒ Object



165
166
167
# File 'lib/puppeteer/network_manager.rb', line 165

def emulate_network_conditions(network_condition)
  @internal_network_condition.network_condition = network_condition
end

#extra_http_headers!Object<string, string>



151
152
153
# File 'lib/puppeteer/network_manager.rb', line 151

def extra_http_headers
  @extra_http_headers.dup
end

#extra_http_headers=(headers) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
# File 'lib/puppeteer/network_manager.rb', line 138

def extra_http_headers=(headers)
  new_extra_http_headers = {}
  headers.each do |key, value|
    unless value.is_a?(String)
      raise ArgumentError.new("Expected value of header \"#{key}\" to be String, but \"#{value}\" is found.")
    end
    new_extra_http_headers[key.downcase] = value
  end
  @extra_http_headers = new_extra_http_headers
  @client.send_message('Network.setExtraHTTPHeaders', headers: new_extra_http_headers)
end

#initObject



115
116
117
118
119
120
# File 'lib/puppeteer/network_manager.rb', line 115

def init
  @client.send_message('Network.enable')
  if @ignore_https_errors
    @client.send_message('Security.setIgnoreCertificateErrors', ignore: true)
  end
end

#inspectObject



122
123
124
125
126
127
128
# File 'lib/puppeteer/network_manager.rb', line 122

def inspect
  values = i[network_event_manager].map do |sym|
    value = instance_variable_get(:"@#{sym}")
    "@#{sym}=#{value}"
  end
  "#<Puppeteer::HTTPRequest #{values.join(' ')}>"
end

#num_requests_in_progressObject



155
156
157
# File 'lib/puppeteer/network_manager.rb', line 155

def num_requests_in_progress
  @network_event_manager.num_requests_in_progress
end

#offline_mode=(value) ⇒ Object



160
161
162
# File 'lib/puppeteer/network_manager.rb', line 160

def offline_mode=(value)
  @internal_network_condition.offline_mode=(value)
end

#request_interception=(enabled) ⇒ Object



184
185
186
187
# File 'lib/puppeteer/network_manager.rb', line 184

def request_interception=(enabled)
  @user_request_interception_enabled = enabled
  update_protocol_request_interception
end

#set_user_agent(user_agent, user_agent_metadata = nil) ⇒ Object Also known as: user_agent=



171
172
173
174
175
176
# File 'lib/puppeteer/network_manager.rb', line 171

def set_user_agent(user_agent,  = nil)
  @client.send_message('Network.setUserAgentOverride', {
    userAgent: user_agent,
    userAgentMetadata: ,
  }.compact)
end