Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: scheme (Re: indexer.pl)
- From: knok@xxxxxxxxxxxxx (NOKUBI Takatsugu)
- Date: Thu, 5 Dec 2002 15:43:07 JST
- X-ml-name: namazu-devel-ja
- X-mail-count: 02710
<200212050640.PAA31685@xxxxxxxxxxxxxxxxxx>の記事において
私は書きました。
>> とりあえずできました。まずは scheme に対応するための差分をつけます。
これに対応した scheme/http.pl です。
まだエラーチェック等いろいろと甘いですが、一応これで
$ mknmz http://www.namazu.org/index.html
といったことができます。
--
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx
knok@xxxxxxxxxx / knok@xxxxxxxxxx
--
#
# -*- Perl -*-
# http.pl
#
#
package Namazu::Scheme::http;
use strict;
require 'util.pl';
sub scheme() {
return ('http');
}
sub status() {
return 'no' if (! util::checklib('Net/HTTP.pm'));
return 'no' if (! util::checklib('URI.pm'));
return 'yes';
}
sub recursive() {
return 0;
}
sub init() {
eval 'use Net::HTTP;';
eval 'use URI;';
eval 'use HTTP::Date;';
}
sub fetch($$) {
my ($url, $contref) = @_;
my $err = undef;
my $u = URI->new($url);
my $h = Net::HTTP->new(Host => $u->host());
$h->write_request(GET => $u->path());
my $code;
($code, undef, undef) = $h->read_response_headers();
if ($code eq '200') {
$h->read_entity_body($$contref, $conf::FILE_SIZE_MAX);
} else {
$err = $code;
}
return $err;
}
sub mtime($) {
my $url = shift @_;
my $u = URI->new($url);
my $h = Net::HTTP->new(Host => $u->host());
$h->write_request(HEAD => $u->path());
my ($code, $mess, %head) = $h->read_response_headers();
return time unless defined $head{'Last-Modified'};
return HTTP::Date::str2time($head{'Last-Modified'});
}
1;