use Params::Validate qw(validate_with :types);
use Digest::MD5 qw(md5_hex);
use Debbugs::Mail qw(get_addresses :reply);
-use Debbugs::MIME qw(decode_rfc1522 create_mime_message);
+use Debbugs::MIME qw(decode_rfc1522 create_mime_message parse_to_mime_entity);
use Debbugs::CGI qw(:url :html :util);
-use Debbugs::Common qw(globify_scalar english_join);
+use Debbugs::Common qw(globify_scalar english_join hash_slice);
use Debbugs::UTF8;
use Debbugs::Config qw(:config);
use Debbugs::Log qw(:read);
output => $output,
attachments => $attachments,
terse => $param{terse},
- exists $param{msg}?(msg=>$param{msg}):(),
- exists $param{att}?(att=>$param{att}):(),
- exists $param{avatars}?(avatars=>$param{avatars}):(),
+ hash_slice(%param,qw(msg att avatars)),
);
if ($raw_output) {
return $raw_output;
output => $output,
attachments => $attachments,
terse => $param{terse},
- exists $param{msg}?(msg=>$param{msg}):(),
- exists $param{att}?(att=>$param{att}):(),
- exists $param{avatars}?(avatars=>$param{avatars}):(),
+ hash_slice(%param,qw(msg att avatars)),
);
# print {$output} "\n";
}
my $entity;
my $tempdir;
if (not blessed $record) {
- my $parser = MIME::Parser->new();
- # this will be cleaned up once it goes out of scope
- $tempdir = File::Temp->newdir();
- $parser->output_under($tempdir->dirname());
- if ($record->{inner_file}) {
- $entity = $parser->parse($record->{fh}) or
- die "Unable to parse entity";
- } else {
- $entity = $parser->parse_data($record->{text}) or
- die "Unable to parse entity";
- }
+ $entity = parse_to_mime_entity($record);
} else {
$entity = $record;
}
output => $output_fh,
attachments => \@attachments,
terse => $param{terse},
- exists $param{msg}?(msg=>$param{msg}):(),
- exists $param{att}?(att=>$param{att}):(),
- exists $param{trim_headers}?(trim_headers=>$param{trim_headers}):(),
- exists $param{avatars}?(avatars=>$param{avatars}):(),
+ hash_slice(%param,qw(msg att trim_headers avatars),
+ ),
);
return $raw_output?$output:decode_utf8($output);
}