Class: WWW::Mechanize::File

Inherits:
Object
  • Object
show all
Defined in:
lib/www/mechanize/file.rb

Overview

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

Direct Known Subclasses

FileSaver, Page

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uri = nil, response = nil, body = nil, code = nil) {|_self| ... } ⇒ File

Returns a new instance of File.

Yields:

  • (_self)

Yield Parameters:



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/www/mechanize/file.rb', line 25

def initialize(uri=nil, response=nil, body=nil, code=nil)
  @uri, @body, @code = uri, body, code
  @response = Headers.new

  # Copy the headers in to a hash to prevent memory leaks
  if response
    response.each { |k,v|
      @response[k] = v
    }
  end

  @filename = 'index.html'

  # Set the filename
  if disposition = @response['content-disposition']
    disposition.split(/;\s*/).each do |pair|
      k,v = pair.split(/=/, 2)
      @filename = v if k.downcase == 'filename'
    end
  else
    if @uri
      @filename = @uri.path.split(/\//).last || 'index.html'
      @filename << ".html" unless @filename =~ /\./
    end
  end

  yield self if block_given?
end

Instance Attribute Details

#bodyObject Also known as: content

Returns the value of attribute body.



20
21
22
# File 'lib/www/mechanize/file.rb', line 20

def body
  @body
end

#codeObject

Returns the value of attribute code.



20
21
22
# File 'lib/www/mechanize/file.rb', line 20

def code
  @code
end

#filenameObject

Returns the value of attribute filename.



20
21
22
# File 'lib/www/mechanize/file.rb', line 20

def filename
  @filename
end

#responseObject Also known as: header

Returns the value of attribute response.



20
21
22
# File 'lib/www/mechanize/file.rb', line 20

def response
  @response
end

#uriObject

Returns the value of attribute uri.



20
21
22
# File 'lib/www/mechanize/file.rb', line 20

def uri
  @uri
end

Instance Method Details

#save_as(filename = nil) ⇒ Object Also known as: save

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



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/www/mechanize/file.rb', line 55

def save_as(filename = nil)
  if filename.nil?
    filename = @filename
    number = 1
    while(::File.exists?(filename))
      filename = "#{@filename}.#{number}"
      number += 1
    end
  end

  ::File::open(filename, "wb") { |f|
    f.write body
  }
end