Class Mechanize::File
In: lib/mechanize/file.rb
Parent: Object
Mechanize\n[lib/mechanize.rb\nlib/mechanize/chain.rb\nlib/mechanize/chain/auth_headers.rb\nlib/mechanize/chain/body_decoding_handler.rb\nlib/mechanize/chain/connection_resolver.rb\nlib/mechanize/chain/custom_headers.rb\nlib/mechanize/chain/handler.rb\nlib/mechanize/chain/header_resolver.rb\nlib/mechanize/chain/parameter_resolver.rb\nlib/mechanize/chain/pre_connect_hook.rb\nlib/mechanize/chain/request_resolver.rb\nlib/mechanize/chain/response_body_parser.rb\nlib/mechanize/chain/response_header_handler.rb\nlib/mechanize/chain/response_reader.rb\nlib/mechanize/chain/ssl_resolver.rb\nlib/mechanize/chain/uri_resolver.rb\nlib/mechanize/content_type_error.rb\nlib/mechanize/cookie.rb\nlib/mechanize/cookie_jar.rb\nlib/mechanize/file.rb\nlib/mechanize/file_response.rb\nlib/mechanize/file_saver.rb\nlib/mechanize/form.rb\nlib/mechanize/form/button.rb\nlib/mechanize/form/check_box.rb\nlib/mechanize/form/field.rb\nlib/mechanize/form/file_upload.rb\nlib/mechanize/form/image_button.rb\nlib/mechanize/form/multi_select_list.rb\nlib/mechanize/form/option.rb\nlib/mechanize/form/radio_button.rb\nlib/mechanize/form/select_list.rb\nlib/mechanize/headers.rb\nlib/mechanize/history.rb\nlib/mechanize/monkey_patch.rb\nlib/mechanize/page.rb\nlib/mechanize/page/base.rb\nlib/mechanize/page/frame.rb\nlib/mechanize/page/image.rb\nlib/mechanize/page/label.rb\nlib/mechanize/page/link.rb\nlib/mechanize/page/meta.rb\nlib/mechanize/pluggable_parsers.rb\nlib/mechanize/redirect_limit_reached_error.rb\nlib/mechanize/redirect_not_get_or_head_error.rb\nlib/mechanize/response_code_error.rb\nlib/mechanize/unsupported_scheme_error.rb\nlib/mechanize/util.rb] dot/f_53.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 = Mechanize.new
 agent.get('http://example.com/foo.jpg').class  #=> 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/mechanize/file.rb, line 24
24:     def initialize(uri=nil, response=nil, body=nil, code=nil)
25:       @uri, @body, @code = uri, body, code
26:       @response = Headers.new
27: 
28:       # Copy the headers in to a hash to prevent memory leaks
29:       if response
30:         response.each { |k,v|
31:           @response[k] = v
32:         }
33:       end
34: 
35:       @filename = 'index.html'
36: 
37:       # Set the filename
38:       if disposition = @response['content-disposition']
39:         disposition.split(/;\s*/).each do |pair|
40:           k,v = pair.split(/=/, 2)
41:           @filename = v if k && k.downcase == 'filename'
42:         end
43:       else
44:         if @uri
45:           @filename = @uri.path.split(/\//).last || 'index.html'
46:           @filename << ".html" unless @filename =~ /\./
47:         end
48:       end
49: 
50:       yield self if block_given?
51:     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/mechanize/file.rb, line 54
54:     def save_as(filename = nil)
55:       if filename.nil?
56:         filename = @filename
57:         number = 1
58:         while(::File.exists?(filename))
59:           filename = "#{@filename}.#{number}"
60:           number += 1
61:         end
62:       end
63: 
64:       ::File::open(filename, "wb") { |f|
65:         f.write body
66:       }
67:     end

[Validate]