package Gopher::Server::Response;
use strict;
use warnings;
sub new
{
my ($class, $in) = @_;
die "Need a hashref" unless ref $in eq 'HASH';
my $request = $in->{request}
or die "Need a request to give a response to";
my $self = {
request => $request,
gopher_plus => $in->{gopher_plus},
fh => $in->{fh},
information_blocks => $in->{information_blocks},
menu_items => $in->{menu_items},
};
bless $self, $class;
}
sub print_to
{
my $self = shift;
my $fh = shift || *STDOUT;
if($self->{fh}) {
$self->_print_filehandle( $fh );
}
elsif($self->{menu_items}) {
$self->_print_menu( $fh );
}
elsif($self->{information_blocks}) {
$self->_print_info( $fh );
}
else {
die "Don't have anything to print!";
}
}
sub _print_filehandle
{
my ($self, $fh) = @_;
my $in = $self->{fh};
while( read( $in, my $buf, 8192 ) ) {
print $fh $buf;
}
}
sub _print_menu
{
my ($self, $fh) = @_;
foreach my $menu_item (@{ $self->{menu_items} }) {
print $fh $menu_item->as_string, "\r\n";
}
print $fh ".\r\n";
}
sub _print_info
{
my ($self, $fh) = @_;
}
sub request { $_[0]->{request} }
1;
__END__
=head1 NAME
Gopher::Server::Response -- A server response for Gopher requests
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 METHODS
=head1 AUTHOR
Timm Murray
CPAN ID: TMURRAY
E-Mail: tmurray@cpan.org
Homepage: http://www.wumpus-cave.net
=head1 LICENSE
Gopher::Server
Copyright (C) 2004 Timm Murray
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
=cut
syntax highlighted by Code2HTML, v. 0.9.1