package Razor2::Preproc::Manager;
use Razor2::Preproc::deBase64;
use Razor2::Preproc::deQP;
use Razor2::Preproc::deHTMLxs;
use Razor2::Preproc::deHTML;
use Razor2::Preproc::deNewline;
use Razor2::Preproc::deHTML_comment;
use Data::Dumper;
use strict;
sub new {
my ($class, %args) = @_;
my %self = ();
$self{deBase64} = new Razor2::Preproc::deBase64 unless exists $args{no_deBase64};
$self{deQP} = new Razor2::Preproc::deQP unless exists $args{no_deQP};
$self{deHTML} = new Razor2::Preproc::deHTMLxs unless exists $args{no_deHTML};
$self{deNewline} = new Razor2::Preproc::deNewline unless exists $args{no_deNewline};
$self{deHTML_comment} = new Razor2::Preproc::deHTML_comment if exists $args{deHTML_comment};
$self{rm} = $args{RM};
return bless \%self, $class;
}
#
# $bodyref must be Headers\n\r*\nBody
# for this to work. Cleaned ref to Body returned.
#
sub preproc {
my ($self, $bodyref, $dolength) = @_;
my $lengths = { '1_orig' => length($$bodyref) } if $dolength;
#-- $self->{rm}->{log}->log(12, "before_deBase64:");
if (exists $$self{deBase64} && $self->{deBase64}->isit($bodyref)) {
$self->{deBase64}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deBase64:");
#$self->log2file($bodyref, "preproc.afta.debase64");
$lengths->{'2_after_deBase64'} = length($$bodyref) if $dolength;
#-- $self->{rm}->{log}->log(12, "before_deQP:");
my $isQP;
if (exists $$self{deQP} && ($isQP = $self->{deQP}->isit($bodyref))) {
$self->{deQP}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deQP:");
#$self->log2file($bodyref, "preproc.afta.deQP.$isQP");
$lengths->{'3_after_deQP'} = length($$bodyref) if $dolength;
#-- $self->{rm}->{log}->log(12, "before_deHTML:");
if (exists $$self{deHTML} && $self->{deHTML}->isit($bodyref)) {
$self->{deHTML}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deHTML:");
if (exists $$self{deHTML_comment} && $self->{deHTML_comment}->isit($bodyref)) {
$self->{deHTML_comment}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "before_deNewline:");
if (exists $$self{deNewline}) {
$self->{deNewline}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deNewline:");
#$self->log2file($bodyref, "preproc.afta.deHTML");
$lengths->{'4_after_deHTML'} = length($$bodyref) if $dolength;
my ($hdr, $body) = split /\n\r*\n/, $$bodyref, 2;
$$bodyref = $body;
$lengths->{'5_after_header_removal'} = length($$bodyref) if $dolength;
return $lengths;
}
sub log2file {
my ($self, $msgref, $mailid) = @_;
my $len = length($$msgref);
my $fn = "/tmp/.razor.debug.msg.$$.$mailid";
if (open OUT, ">$fn") {
print OUT $$msgref;
close OUT;
} else {
}
}
1;