diff options
Diffstat (limited to 'Xerl/Page/Document.pm')
| -rw-r--r-- | Xerl/Page/Document.pm | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Xerl/Page/Document.pm b/Xerl/Page/Document.pm new file mode 100644 index 0000000..4ba1c0b --- /dev/null +++ b/Xerl/Page/Document.pm @@ -0,0 +1,55 @@ +# Xerl (c) 2005-2011, 2013-2015 by Paul Buetow +# +# E-Mail: xerl@dev.buetow.org WWW: https://xerl.buetow.org +# +# This is free software, you may use it and distribute it under the same +# terms as Perl itself. + +package Xerl::Page::Document; + +use strict; +use warnings; + +use v5.14.0; + +use Xerl::Base; +use Xerl::Main::Global; +use Xerl::Setup::Configure; +use Xerl::Tools::FileIO; + +sub parse { + my $self = $_[0]; + my $config = $self->get_config(); + + return undef unless $config->document_exists(); + + my $document = $config->get_document(); + my ($filename) = $document =~ m#([^/]+)$#; + my ($postfix) = $document =~ /\.(.+)$/; + my $path; + + print 'Content-Type: '; + print $config->getval( 'ctype.' . lc($postfix) ), "\n"; + print "Content-Disposition: attachment; filename=\"$filename\"\n\n"; + + $path = $config->get_hostpath() . "/htdocs/$document"; + unless ( -f $path ) { + $path = + $config->get_hostroot() + . $config->get_defaulthost() + . "/htdocs/$document"; + } + + my $io = Xerl::Tools::FileIO->new( path => $path ); + + if ( -1 == $io->fslurp() ) { + $config->set_finish_request(1); + } + else { + $io->print(); + } + + return undef; +} + +1; |
