12: def handle(ctx, params)
13: response = params[:response]
14: uri = params[:uri]
15: page = params[:page]
16: cache_obj = (@connection_cache["#{uri.host}:#{uri.port}"] ||= {
17: :connection => nil,
18: :keep_alive_options => {},
19: })
20:
21:
22: if keep_alive_info = response['keep-alive']
23: keep_alive_info.split(/,\s*/).each do |option|
24: k, v = option.split(/=/)
25: cache_obj[:keep_alive_options] ||= {}
26: cache_obj[:keep_alive_options][k.intern] = v
27: end
28: end
29:
30: if page.is_a?(Page) && page.body =~ /Set-Cookie/
31: page.search('//meta[@http-equiv="Set-Cookie"]').each do |meta|
32: Cookie::parse(uri, meta['content']) { |c|
33: Mechanize.log.debug("saved cookie: #{c}") if Mechanize.log
34: @cookie_jar.add(uri, c)
35: }
36: end
37: end
38:
39: (response.get_fields('Set-Cookie')||[]).each do |cookie|
40: Cookie::parse(uri, cookie) { |c|
41: Mechanize.log.debug("saved cookie: #{c}") if Mechanize.log
42: @cookie_jar.add(uri, c)
43: }
44: end
45: super
46: end