r11523@llin: dpavlin | 2005-12-05 01:22:00 +0100
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 5 Dec 2005 17:47:10 +0000 (17:47 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 5 Dec 2005 17:47:10 +0000 (17:47 +0000)
 even more changes on the road to controlling Hyper Estraier from perl :-)

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@211 07558da8-63fa-0310-ba24-9fe276d99e06

Makefile.PL
lib/WebPAC/Output/Estraier.pm
lib/WebPAC/Search/Estraier.pm
t/7-est.t

index 398467a..83f1476 100644 (file)
@@ -24,7 +24,7 @@ WriteMakefile(
        'File::Temp' => 0,
        'List::Util' => 0,
        'URI::Escape' => 0,
-       'LWP::Simple' => 0,
+       'LWP' => 0,
     },
     dist                => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
     clean               => { FILES => 'WebPAC-* pod2html Makefile tags' },
index 83eae34..4e40f2b 100644 (file)
@@ -8,7 +8,7 @@ use base qw/WebPAC::Common/;
 use HyperEstraier;
 use Text::Iconv;
 use Data::Dumper;
-use LWP::Simple;
+use LWP;
 use URI::Escape;
 
 =head1 NAME
@@ -17,11 +17,11 @@ WebPAC::Output::Estraier - Create Hyper Estraier full text index
 
 =head1 VERSION
 
-Version 0.02
+Version 0.03
 
 =cut
 
-our $VERSION = '0.02';
+our $VERSION = '0.03';
 
 =head1 SYNOPSIS
 
@@ -81,7 +81,7 @@ sub new {
 
        my $log = $self->_get_logger;
 
-       $log->debug("self: ", sub { Dumper($self) });
+       #$log->debug("self: ", sub { Dumper($self) });
 
        foreach my $p (qw/masterurl user passwd database/) {
                $log->logdie("need $p") unless ($self->{$p});
@@ -93,9 +93,11 @@ sub new {
 
        $log->info("opening Hyper Estraier index $self->{url}");
 
-       my @nodes = $self->est_master( action => 'nodelist' );
+       my $nodes = $self->est_master( action => 'nodelist' );
 
-       if (! grep(/$self->{database}/, @nodes)) {
+       $log->debug("nodes found: $nodes");
+
+       if ($nodes !~ m/^$self->{database}\t/sm) {
                $log->info("creating index $url");
                $self->est_master(
                        action => 'nodeadd',
@@ -234,14 +236,23 @@ sub est_master {
 
        $log->debug("calling $url");
 
-       my $tsv = get($url);
+       if (! $self->{_master_ua}) {
+               $self->{_master_ua} = LWP::UserAgent->new( ) || $log->logdie("can't create LWP::UserAgent: $!");
+               $self->{_master_ua}->credentials('localhost:1978','Super User', $self->{user} => $self->{passwd});
+       }
+
+       my $res = $self->{_master_ua}->get($url);
 
-       if (! $tsv) {
-               $log->warn("unable to call $url");
+       if ($res->is_success) {
+               #$log->debug( $res->content );
+               return split(/\n/, $res->content) if wantarray;
+               return $res->content;
+       } else {
+               $log->warn("unable to call $url: " . $res->status_line);
+               #$log->debug(Dumper($res, $self->{'_master_ua'}));
                return;
        }
 
-       return split(/\n/, $tsv);
 }
 
 =head1 AUTHOR
index 1647953..0403ea4 100644 (file)
@@ -13,11 +13,11 @@ WebPAC::Search::Estraier - search Hyper Estraier full text index
 
 =head1 VERSION
 
-Version 0.03
+Version 0.04
 
 =cut
 
-our $VERSION = '0.03';
+our $VERSION = '0.04';
 
 =head1 SYNOPSIS
 
@@ -31,7 +31,8 @@ L<WebPAC::Output::Estraier>.
 Connect to Hyper Estraier index using HTTP
 
  my $est = new WebPAC::Search::Estraier(
-       url => 'http://localhost:1978/node/webpac2',
+       masterurl => 'http://localhost:1978/',
+       database => 'webpac2',
        user => 'admin',
        passwd => 'admin',
        encoding => 'iso-8859-2',
@@ -42,10 +43,14 @@ Options are:
 
 =over 4
 
-=item url
+=item maseterurl
 
 URI to C<estmaster> node
 
+=item database
+
+name of C<estmaster> node
+
 =item user
 
 C<estmaster> user with read rights
@@ -76,10 +81,14 @@ sub new {
 
        my $log = $self->_get_logger;
 
-       foreach my $p (qw/url user passwd/) {
+       foreach my $p (qw/masterurl user passwd/) {
                $log->logdie("need $p") unless ($self->{$p});
        }
 
+       my $url = $self->{masterurl} . '/node/' . $self->{database};
+       $url =~ s#//#/#g;
+       $self->{url} = $url;
+
        $log->info("opening Hyper Estraier index $self->{'url'} as $self->{'user'}");
 
        $self->{'db'} = HyperEstraier::Node->new($self->{'url'});
index 9b74cea..7f0a5ea 100755 (executable)
--- a/t/7-est.t
+++ b/t/7-est.t
@@ -2,7 +2,7 @@
 
 use strict;
 
-use Test::More tests => 6;
+use Test::More tests => 7;
 use Test::Exception;
 use Cwd qw/abs_path/;
 use File::Temp qw/tempdir/;
@@ -10,6 +10,7 @@ use Data::Dumper;
 use blib;
 
 BEGIN {
+use_ok( 'WebPAC::Output::Estraier' );
 use_ok( 'WebPAC::Search::Estraier' );
 use_ok( 'Log::Log4perl' );
 }
@@ -17,14 +18,23 @@ use_ok( 'Log::Log4perl' );
 Log::Log4perl::init('./conf/log.conf');
 ok(my $log = Log::Log4perl->get_logger('WebPAC.test'), "get_logger");
 
-ok(my $est = new WebPAC::Search::Estraier(
-       url => 'http://localhost:1978/node/webpac2',
+my $config = {
+       masterurl => 'http://localhost:1978/',
        user => 'admin',
        passwd => 'admin',
+       database => 'webpac2test',
        encoding => 'iso-8859-2',
        log => $log,
        debug => 1,
-), "new");
+};
+
+ok(my $est = new WebPAC::Output::Estraier( %{ $config } ), "new WebPAC::Output::Estraier");
+
+ok(my $list = $est->est_master( action => 'nodelist' ), "nodelist");
+
+like($list , qr/$config->{database}/, "$list has $config->{database}");
+
+ok($est = new WebPAC::Search::Estraier( %{ $config } ), "new WebPAC::Search::Estraier");
 
 my $query = 'ivan';
 my $max = 3;