class Mechanize::DirectorySaver
Unlike Mechanize::FileSaver, the directory saver places all downloaded files in a single pre-specified directory.
You must register the directory to save to before using the directory saver:
agent.pluggable_parser['image'] = \ Mechanize::DirectorySaver.save_to 'images'
Public Class Methods
decode_filename?()
click to toggle source
True if downloaded files should have their names decoded before saving.
# File lib/mechanize/directory_saver.rb, line 40 def self.decode_filename? @options[:decode_filename] end
directory()
click to toggle source
The directory downloaded files will be saved to.
# File lib/mechanize/directory_saver.rb, line 33 def self.directory @directory end
new(uri = nil, response = nil, body_io = nil, code = nil)
click to toggle source
Saves the body_io
into the directory specified for this DirectorySaver by save_to. The filename is
chosen by Mechanize::Parser#extract_filename.
Calls superclass method
Mechanize::Download.new
# File lib/mechanize/directory_saver.rb, line 48 def initialize uri = nil, response = nil, body_io = nil, code = nil directory = self.class.directory raise Mechanize::Error, 'no save directory specified - ' 'use Mechanize::DirectorySaver.save_to ' 'and register the resulting class' unless directory super @filename = CGI.unescape(@filename) if self.class.decode_filename? path = File.join directory, @filename save path end
save_to(directory, options = {})
click to toggle source
Creates a DirectorySaver subclass that
will save responses to the given directory
. If
options
includes a decode_filename
value set to
true
then the downloaded filename will be ran through
CGI.unescape
before being saved.
# File lib/mechanize/directory_saver.rb, line 21 def self.save_to directory, options = {} directory = File.expand_path directory Class.new self do |klass| klass.instance_variable_set :@directory, directory klass.instance_variable_set :@options, options end end