App-lupapona
view release on metacpan or search on metacpan
script/lupa-pona view on Meta::CPAN
} => sub {
my ($loop, $stream) = @_;
$stream->on(read => \&serve_gemini);
});
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
sub serve_gemini {
my ($stream, $url) = @_;
return unless $url =~ s/\r\n.*//s; # needs URL and CR LF in one chunk
my ($scheme, $authority, $path, $query, $fragment) =
$url =~ m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;
my ($url_host, $url_port) = split(/:/, $authority);
$url_port ||= 1965;
$log->info("Looking at $url");
if (not $url) {
$log->debug("The URL is empty");
$stream->write("59 URL expected\r\n");
} elsif (length($url) > 1024) {
$log->debug("The URL is too long");
$stream->write("59 The URL is too long\r\n");
( run in 3.598 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )