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
True if downloaded files should have their names decoded before saving.
# File lib/mechanize/directory_saver.rb, line 41 def self.decode_filename? @options[:decode_filename] end
The directory downloaded files will be saved to.
# File lib/mechanize/directory_saver.rb, line 34 def self.directory @directory end
Saves the body_io
into the directory specified for this DirectorySaver by save_to. The filename is
chosen by Mechanize::Parser#extract_filename.
# File lib/mechanize/directory_saver.rb, line 56 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 if self.class.overwrite? save! path else save path end end
Checks if overwrite
parameter is set to true
# File lib/mechanize/directory_saver.rb, line 48 def self.overwrite? @options[:overwrite] end
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. If options
includes a overwrite
value set to true
then
downloaded file will be overwritten if two files with the same names exist.
# File lib/mechanize/directory_saver.rb, line 22 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