Class WWW::Mechanize::File
In: lib/www/mechanize/file.rb
Parent: Object
Mechanize\n[lib/www/mechanize.rb\nlib/www/mechanize/chain.rb\nlib/www/mechanize/chain/auth_headers.rb\nlib/www/mechanize/chain/body_decoding_handler.rb\nlib/www/mechanize/chain/connection_resolver.rb\nlib/www/mechanize/chain/custom_headers.rb\nlib/www/mechanize/chain/header_resolver.rb\nlib/www/mechanize/chain/parameter_resolver.rb\nlib/www/mechanize/chain/pre_connect_hook.rb\nlib/www/mechanize/chain/request_resolver.rb\nlib/www/mechanize/chain/response_body_parser.rb\nlib/www/mechanize/chain/response_header_handler.rb\nlib/www/mechanize/chain/response_reader.rb\nlib/www/mechanize/chain/ssl_resolver.rb\nlib/www/mechanize/chain/uri_resolver.rb\nlib/www/mechanize/content_type_error.rb\nlib/www/mechanize/cookie.rb\nlib/www/mechanize/cookie_jar.rb\nlib/www/mechanize/file.rb\nlib/www/mechanize/file_response.rb\nlib/www/mechanize/file_saver.rb\nlib/www/mechanize/form.rb\nlib/www/mechanize/form/button.rb\nlib/www/mechanize/form/check_box.rb\nlib/www/mechanize/form/field.rb\nlib/www/mechanize/form/file_upload.rb\nlib/www/mechanize/form/image_button.rb\nlib/www/mechanize/form/multi_select_list.rb\nlib/www/mechanize/form/option.rb\nlib/www/mechanize/form/radio_button.rb\nlib/www/mechanize/form/select_list.rb\nlib/www/mechanize/headers.rb\nlib/www/mechanize/history.rb\nlib/www/mechanize/monkey_patch.rb\nlib/www/mechanize/page.rb\nlib/www/mechanize/page/base.rb\nlib/www/mechanize/page/frame.rb\nlib/www/mechanize/page/link.rb\nlib/www/mechanize/page/meta.rb\nlib/www/mechanize/pluggable_parsers.rb\nlib/www/mechanize/redirect_limit_reached_error.rb\nlib/www/mechanize/redirect_not_get_or_head_error.rb\nlib/www/mechanize/response_code_error.rb\nlib/www/mechanize/unsupported_scheme_error.rb\nlib/www/mechanize/util.rb] lib/www/mechanize.rb Handler WWW dot/m_52_0.png

Synopsis

This is the default (and base) class for the Pluggable Parsers. If Mechanize cannot find an appropriate class to use for the content type, this class will be used. For example, if you download a JPG, Mechanize will not know how to parse it, so this class will be instantiated.

This is a good class to use as the base class for building your own pluggable parsers.

Example

 require 'rubygems'
 require 'mechanize'

 agent = WWW::Mechanize.new
 agent.get('http://example.com/foo.jpg').class  #=> WWW::Mechanize::File

Methods

new   save   save_as  

External Aliases

response -> header
body -> content

Attributes

body  [RW] 
code  [RW] 
filename  [RW] 
response  [RW] 
uri  [RW] 

Public Class methods

[Source]

    # File lib/www/mechanize/file.rb, line 25
25:       def initialize(uri=nil, response=nil, body=nil, code=nil)
26:         @uri, @body, @code = uri, body, code
27:         @response = Headers.new
28: 
29:         # Copy the headers in to a hash to prevent memory leaks
30:         if response
31:           response.each { |k,v|
32:             @response[k] = v
33:           }
34:         end
35: 
36:         @filename = 'index.html'
37: 
38:         # Set the filename
39:         if disposition = @response['content-disposition']
40:           disposition.split(/;\s*/).each do |pair|
41:             k,v = pair.split(/=/, 2)
42:             @filename = v if k && k.downcase == 'filename'
43:           end
44:         else
45:           if @uri
46:             @filename = @uri.path.split(/\//).last || 'index.html'
47:             @filename << ".html" unless @filename =~ /\./
48:           end
49:         end
50: 
51:         yield self if block_given?
52:       end

Public Instance methods

save(filename = nil)

Alias for save_as

Use this method to save the content of this object to filename

[Source]

    # File lib/www/mechanize/file.rb, line 55
55:       def save_as(filename = nil)
56:         if filename.nil?
57:           filename = @filename
58:           number = 1
59:           while(::File.exists?(filename))
60:             filename = "#{@filename}.#{number}"
61:             number += 1
62:           end
63:         end
64: 
65:         ::File::open(filename, "wb") { |f|
66:           f.write body
67:         }
68:       end

[Validate]