--- trunk/Estraier.pm 2006/05/09 12:42:39 135 +++ trunk/Estraier.pm 2006/05/10 14:57:50 142 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '0.06_1'; +our $VERSION = '0.06'; =head1 NAME @@ -20,7 +20,10 @@ my $node = new Search::Estraier::Node( url => 'http://localhost:1978/node/test', user => 'admin', - passwd => 'admin' + passwd => 'admin', + create => 1, + label => 'Label for node', + croak_on_error => 1, ); # create document @@ -874,6 +877,8 @@ url => 'http://localhost:1978/node/test', user => 'admin', passwd => 'admin' + create => 1, + label => 'optional node label', debug => 1, croak_on_error => 1 ); @@ -894,6 +899,14 @@ password for authentication +=item create + +create node if it doesn't exists + +=item label + +optional label for new node if C is used + =item debug dumps a B of debugging output @@ -937,6 +950,19 @@ size => -1.0, }; + if ($self->{create}) { + if (! eval { $self->name } || $@) { + my $name = $1 if ($self->{url} =~ m#/node/([^/]+)/*#); + croak "can't find node name in '$self->{url}'" unless ($name); + my $label = $self->{label} || $name; + $self->master( + action => 'nodeadd', + name => $name, + label => $label, + ) || croak "can't create node $name ($label)"; + } + } + $self ? return $self : return undef; } @@ -1781,11 +1807,11 @@ map { croak "need parametar '$_' for action '$action'" unless ($args->{$_}); push @args, $_ . '=' . uri_escape( $args->{$_} ); - } ( keys %{ $rest->{required} } ); + } ( @{ $rest->{required} } ); map { push @args, $_ . '=' . uri_escape( $args->{$_} ) if ($args->{$_}); - } ( keys %{ $rest->{optional} } ); + } ( @{ $rest->{optional} } ); } @@ -1819,6 +1845,7 @@ return @results; } elsif ($resbody) { + chomp $resbody; return $resbody; } else { return 0E0;