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
Source
# File lib/mechanize/directory_saver.rb, line 42 def self.decode_filename? @options[:decode_filename] end
True if downloaded files should have their names decoded before saving.
Source
# File lib/mechanize/directory_saver.rb, line 35 def self.directory @directory end
The directory downloaded files will be saved to.
Source
# File lib/mechanize/directory_saver.rb, line 57 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
Saves the body_io
into the directory specified for this DirectorySaver
by save_to. The filename is chosen by Mechanize::Parser#extract_filename
.
Mechanize::Download::new
Source
# File lib/mechanize/directory_saver.rb, line 49 def self.overwrite? @options[:overwrite] end
Checks if overwrite
parameter is set to true
Source
# File lib/mechanize/directory_saver.rb, line 23 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
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.