MIME-tools
view release on metacpan or search on metacpan
lib/MIME/Parser/Filer.pm view on Meta::CPAN
#------------------------------
=item ignore_filename [YESNO]
I<Instance method.>
Return true if we should always ignore recommended filenames in
messages, choosing instead to always generate our own filenames.
With argument, sets this value.
B<Note:> subclasses of MIME::Parser::Filer which override
output_path() might not honor this setting; note, however, that
the built-in subclasses honor it.
=cut
sub ignore_filename {
my $self = shift;
$self->{MPF_IgnoreFilename} = $_[0] if @_;
$self->{MPF_IgnoreFilename};
}
#------------------------------
=item output_dir HEAD
I<Instance method.>
Return the output directory for the given header.
The default method returns ".".
=cut
sub output_dir {
my ($self, $head) = @_;
return ".";
}
#------------------------------
=item output_filename HEAD
I<Instance method, subclasses only.>
A given recommended filename was either not given, or it was judged
to be evil. Return a fake name, possibly using information in the
message HEADer. Note that this is just the filename, not the full path.
Used by L<output_path()|/output_path>.
If you're using the default C<output_path()>, you probably don't
need to worry about avoiding collisions with existing files;
we take care of that in L<find_unused_path()|/find_unused_path>.
=cut
sub output_filename {
my ($self, $head) = @_;
### Get the recommended name:
my $recommended = $head->recommended_filename;
### Get content type:
my ($type, $subtype) = split m{/}, $head->mime_type; $subtype ||= '';
### Get recommended extension, being quite conservative:
my $recommended_ext = (($recommended and ($recommended =~ m{(\.\w+)\Z}))
? $1
: undef);
### Try and get an extension, honoring a given one first:
my $ext = ($recommended_ext ||
$self->{MPF_Ext}{"$type/$subtype"} ||
$self->{MPF_Ext}{"$type/*"} ||
$self->{MPF_Ext}{"*/*"} ||
".dat");
### Get a prefix:
++$GFileNo;
return ($self->output_prefix . "-" . untainted_pid() . "-$GFileNo$ext");
}
#------------------------------
=item output_prefix [PREFIX]
I<Instance method.>
Get the short string that all filenames for extracted body-parts
will begin with (assuming that there is no better "recommended filename").
The default is F<"msg">.
If PREFIX I<is not> given, the current output prefix is returned.
If PREFIX I<is> given, the output prefix is set to the new value,
and the previous value is returned.
Used by L<output_filename()|/output_filename>.
B<Note:> subclasses of MIME::Parser::Filer which override
output_path() or output_filename() might not honor this setting;
note, however, that the built-in subclasses honor it.
=cut
sub output_prefix {
my ($self, $prefix) = @_;
$self->{MPF_Prefix} = $prefix if (@_ > 1);
$self->{MPF_Prefix};
}
#------------------------------
=item output_type_ext
I<Instance method.>
Return a reference to the hash used by the default
L<output_filename()|/output_filename> for mapping from content-types
to extensions when there is no default extension to use.
$emap = $filer->output_typemap;
$emap->{'text/plain'} = '.txt';
$emap->{'text/html'} = '.html';
$emap->{'text/*'} = '.txt';
$emap->{'*/*'} = '.dat';
( run in 0.891 second using v1.01-cache-2.11-cpan-71847e10f99 )