4 |
use strict; |
use strict; |
5 |
use warnings; |
use warnings; |
6 |
|
|
7 |
our $VERSION = '0.06_1'; |
our $VERSION = '0.07_1'; |
8 |
|
|
9 |
=head1 NAME |
=head1 NAME |
10 |
|
|
20 |
my $node = new Search::Estraier::Node( |
my $node = new Search::Estraier::Node( |
21 |
url => 'http://localhost:1978/node/test', |
url => 'http://localhost:1978/node/test', |
22 |
user => 'admin', |
user => 'admin', |
23 |
passwd => 'admin' |
passwd => 'admin', |
24 |
|
create => 1, |
25 |
|
label => 'Label for node', |
26 |
|
croak_on_error => 1, |
27 |
); |
); |
28 |
|
|
29 |
# create document |
# create document |
877 |
url => 'http://localhost:1978/node/test', |
url => 'http://localhost:1978/node/test', |
878 |
user => 'admin', |
user => 'admin', |
879 |
passwd => 'admin' |
passwd => 'admin' |
880 |
|
create => 1, |
881 |
|
label => 'optional node label', |
882 |
debug => 1, |
debug => 1, |
883 |
croak_on_error => 1 |
croak_on_error => 1 |
884 |
); |
); |
899 |
|
|
900 |
password for authentication |
password for authentication |
901 |
|
|
902 |
|
=item create |
903 |
|
|
904 |
|
create node if it doesn't exists |
905 |
|
|
906 |
|
=item label |
907 |
|
|
908 |
|
optional label for new node if C<create> is used |
909 |
|
|
910 |
=item debug |
=item debug |
911 |
|
|
912 |
dumps a B<lot> of debugging output |
dumps a B<lot> of debugging output |
950 |
size => -1.0, |
size => -1.0, |
951 |
}; |
}; |
952 |
|
|
953 |
|
if ($self->{create}) { |
954 |
|
if (! eval { $self->name } || $@) { |
955 |
|
my $name = $1 if ($self->{url} =~ m#/node/([^/]+)/*#); |
956 |
|
croak "can't find node name in '$self->{url}'" unless ($name); |
957 |
|
my $label = $self->{label} || $name; |
958 |
|
$self->master( |
959 |
|
action => 'nodeadd', |
960 |
|
name => $name, |
961 |
|
label => $label, |
962 |
|
) || croak "can't create node $name ($label)"; |
963 |
|
} |
964 |
|
} |
965 |
|
|
966 |
$self ? return $self : return undef; |
$self ? return $self : return undef; |
967 |
} |
} |
968 |
|
|
1084 |
my $id = shift || return; |
my $id = shift || return; |
1085 |
return unless ($self->{url}); |
return unless ($self->{url}); |
1086 |
croak "id must be number, not '$id'" unless ($id =~ m/^\d+$/); |
croak "id must be number, not '$id'" unless ($id =~ m/^\d+$/); |
1087 |
$self->shuttle_url( $self->{url} . '/out_doc', |
if ($self->shuttle_url( $self->{url} . '/out_doc', |
1088 |
'application/x-www-form-urlencoded', |
'application/x-www-form-urlencoded', |
1089 |
"id=$id", |
"id=$id", |
1090 |
undef |
undef |
1091 |
) == 200; |
) == 200) { |
1092 |
|
$self->_set_info; |
1093 |
|
return $id; |
1094 |
|
} |
1095 |
|
return undef; |
1096 |
} |
} |
1097 |
|
|
1098 |
|
|
1110 |
my $self = shift; |
my $self = shift; |
1111 |
my $uri = shift || return; |
my $uri = shift || return; |
1112 |
return unless ($self->{url}); |
return unless ($self->{url}); |
1113 |
$self->shuttle_url( $self->{url} . '/out_doc', |
if ($self->shuttle_url( $self->{url} . '/out_doc', |
1114 |
'application/x-www-form-urlencoded', |
'application/x-www-form-urlencoded', |
1115 |
"uri=" . uri_escape($uri), |
"uri=" . uri_escape($uri), |
1116 |
undef |
undef |
1117 |
) == 200; |
) == 200) { |
1118 |
|
$self->_set_info; |
1119 |
|
return $uri; |
1120 |
|
} |
1121 |
|
return undef; |
1122 |
} |
} |
1123 |
|
|
1124 |
|
|
1690 |
$self->_set_info; |
$self->_set_info; |
1691 |
return 1; |
return 1; |
1692 |
} |
} |
1693 |
|
return undef; |
1694 |
} |
} |
1695 |
|
|
1696 |
=head2 admins |
=head2 admins |
1837 |
) or confess "shuttle_url failed"; |
) or confess "shuttle_url failed"; |
1838 |
|
|
1839 |
if ($status == $rest->{status}) { |
if ($status == $rest->{status}) { |
1840 |
|
|
1841 |
|
# refresh node info after sync |
1842 |
|
$self->_set_info if ($action eq 'sync'); |
1843 |
|
|
1844 |
if ($rest->{returns} && wantarray) { |
if ($rest->{returns} && wantarray) { |
1845 |
|
|
1846 |
my @results; |
my @results; |