require $p->{"file"};
eval 'require '.$p->{"module"}.'; 1;'
or cluck "Error loading module ".$p->{"module"}.": $@";
- my $result=eval '$'.$p->{"module"}.'::HTML_TEST;';
- return if defined $result && !$result;
- my $url=$URL_BASE.$p->{"url"};
+ my $HTML_TEST=eval '$'.$p->{"module"}.'::HTML_TEST;';
+ return if defined $HTML_TEST && !$HTML_TEST;
+ my $validate=$opt_validate;
+ $validate=0 if $HTML_TEST && $HTML_TEST eq "download";
+ my $HTML_TEST_QUERY_STRING=eval '$'.$p->{"module"}.'::HTML_TEST_QUERY_STRING;';
+ my $url=$URL_BASE.$p->{"url"}.(!$HTML_TEST_QUERY_STRING ? "" : "?".$HTML_TEST_QUERY_STRING);
my $url_matches=1 if $first_pattern && $url=~/$first_pattern/o;
die "Pattern amiguous on: $url\n" if $first_seen && $url_matches;
if (!$first_seen && !($first_seen=($url=~/$first_pattern/o))) {
return;
}
print ".";
- if ($opt_validate) {
+ if ($validate) {
$url=($opt_local ? $URL_VALIDATOR_BASE_LOCAL : $URL_VALIDATOR_BASE).uri_escape($url);
}
my $request=HTTP::Request->new("GET",$url);
$request->header("Cache-control"=>"no-cache");
- my $response=$UA->request($request);
- if ($response->code()==HTTP::Status::RC_OK()) {
- return if !$opt_validate;
+ # Do not: ...->request(...);
+ # as it would follow our tested 403 redirect responses.
+ my $response=$UA->simple_request($request);
+ my $HTML_TEST_RC=eval '$'.$p->{"module"}.'::HTML_TEST_RC;';
+ $HTML_TEST_RC=HTTP::Status::RC_OK() if !defined $HTML_TEST_RC;
+ if ($response->code()==$HTML_TEST_RC) {
+ return if !$validate;
local $_=$response->content();
my $valid=/\bclass="valid"\s*>/;
my $invalid=/\bclass="invalid"\s*>/;
die "\n$url\n";
}
die "\n$url: ".$response->code()."\n";
- });
+ }) for (0,($opt_validate ? 1 : ()));
print "\n";
die "Nothing seen for: $first_pattern\n" if !$first_seen;
use My::Web;
-our $HTML_TEST=0;
+our $HTML_TEST="download";
+our $HTML_TEST_QUERY_STRING="cvs=MyWeb";
sub handler
{
"args_check"=>{
"cvs"=>'^[\w\d][\w\d/.]*$',
},
+ "content_type"=>"text/plain",
+ "http_safe"=>0, # cvs(1) downloads.
);
My::Web->heading();
-$W->{"r"}->content_type("text/plain");
local *F;
use My::Web;
-our $HTML_TEST=0;
+our $HTML_TEST="download"; # FIXME: See below!
+our $HTML_TEST_QUERY_STRING="cvs=captive/src/libcaptive/ke/captivesym.pl";
sub handler
{
my $W=My::Web->init(
- "header_only"=>1,
"args_check"=>{
"cvs"=>'^[\w\d][\w\d/.]*$',
},
+ # FIXME:
+ # Do not: # Do not: "content_type"=>"text/html",
+ # # or whatever as pod2html(1) already produces XHTML.
+ # "header_only"=>"xml",
+ # as currently pod2html(1) produces invalid XHTML for: .../captivesym.pl
+ "content_type"=>"text/html",
+ "header_only"=>1,
+ "http_safe"=>0, # lynx(1) downloads.
);
My::Web->heading();
-$W->{"r"}->content_type("text/html");
local *F;
open F,"lynx -source ".$W->{"project_viewcvs"}."*checkout*/".$W->{"args"}{"cvs"}."?rev=HEAD"
." |pod2html -"