Gopher-Server
view release on metacpan or search on metacpan
lib/Gopher/Server/RequestHandler/File.pm view on Meta::CPAN
my $selector = $request->selector;
opendir( my $dir, $path ) or die "Can't open directory $path: $!\n";
my @menu_items;
foreach my $dir_item (readdir($dir)) {
use Gopher::Server::TypeMapper;
my $item_type = Gopher::Server::TypeMapper->get_type({
filename => "$path/$dir_item",
});
use Net::Gopher::Response::MenuItem;
my $item_selector = $selector . "/$dir_item";
push @menu_items, Net::Gopher::Response::MenuItem->new({
#request => $request,
ItemType => $item_type->gopher_type,
Display => $dir_item,
Selector => $item_selector,
Host => $self->{host},
Port => $self->{port},
});
}
return Gopher::Server::Response->new({
t/025_make_response.t view on Meta::CPAN
use 5.005;
use Test::More tests => 6;
use Test::Exception;
use strict;
use warnings;
use Gopher::Server::ParseRequest;
use Gopher::Server::Response;
use Net::Gopher::Response::MenuItem;
use IO::Scalar;
my $request = Gopher::Server::ParseRequest->parse( '' );
my $data = "content\n";
my $content = $data;
my $fh = IO::Scalar->new(\$content);
dies_ok { Gopher::Server::Response->new() } "Empty constructor dies";
dies_ok { Gopher::Server::Response->new({ }) } "Unfilled args dies";
t/025_make_response.t view on Meta::CPAN
"Request check" );
my $got;
my $out = IO::Scalar->new(\$got);
$response->print_to( $out );
close($out);
ok( $got eq $data, "Response returned" );
close($fh);
my @items;
push @items, Net::Gopher::Response::MenuItem->new({
ItemType => '0',
Display => 'test1',
Selector => '/test1',
Host => 'localhost',
Port => 70,
});
push @items, Net::Gopher::Response::MenuItem->new({
ItemType => '1',
Display => 'test2',
Selector => '/test2',
Host => 'localhost',
Port => 70,
});
$response = Gopher::Server::Response->new({
request => $request,
menu_items => \@items,
});
$data = "0test1\t/test1\tlocalhost\t70\r\n" .
"1test2\t/test2\tlocalhost\t70\r\n" .
".\r\n";
$got = '';
$out = IO::Scalar->new(\$got);
$response->print_to( $out );
close($out);
ok( $got eq $data, "Menu Items returned" );
t/030_map_type.t view on Meta::CPAN
ok( $type->gopher_type eq '0', "Plaintext Gopher type" );
ok( $type->mime_type eq 'text/plain', "Plaintext MIME type" );
# Directories
$type = Gopher::Server::TypeMapper->get_type({
filename => getcwd(),
});
ok( defined $type, "returns a defined value" );
ok( UNIVERSAL::isa( $type, 'Gopher::Server::TypeMapper' ), "isa correct" );
ok( $type->gopher_type eq '1', "Menu Entity Gopher type" );
ok( $type->mime_type eq '', "No MIME equivilent to menu entities" );
# Anything else should be binary type, for now
$type = Gopher::Server::TypeMapper->get_type({
filename => 'blah.foo',
});
ok( defined $type, "return a defined value" );
ok( UNIVERSAL::isa( $type, 'Gopher::Server::TypeMapper' ), "isa correct" );
ok( $type->gopher_type eq '9', "Binary Gopher type" );
t/041_handle_request_file.t view on Meta::CPAN
open(IN, '<', $path) or die "Can't open $good_path: $!\n";
my $data;
while(<IN>) { $data .= $_ }
close(IN);
my $got;
my $out = IO::Scalar->new(\$got);
$response->print_to( $out );
close($out);
ok( $got eq $data, "Menu Items returned" );
$request = Net::Gopher::Request->new( 'Gopher',
Host => "localhost",
Port => 70,
Selector => '',
);
$response = $handler->process( $request );
ok( $response, "processes request" );
ok( UNIVERSAL::isa($response, 'Gopher::Server::Response'), "isa check on returned request" );
( run in 0.693 second using v1.01-cache-2.11-cpan-49f99fa48dc )