--- trunk/Estraier.pm 2006/01/06 20:45:48 56 +++ trunk/Estraier.pm 2006/01/06 21:05:05 58 @@ -717,10 +717,10 @@ }; bless($self, $class); - if (@_) { - $self->{debug} = shift; - warn "## Node debug on\n"; - } + my $args = {@_}; + + $self->{debug} = $args->{debug}; + warn "## Node debug on\n" if ($self->{debug}); $self ? return $self : return undef; } @@ -1497,6 +1497,34 @@ } +=head2 set_link + +Manage node links + + $node->set_link('http://localhost:1978/node/another', 'another node label', $credit); + +If C<$credit> is negative, link is removed. + +=cut + +sub set_link { + my $self = shift; + my ($url, $label, $credit) = @_; + + return unless ($self->{url}); + croak "mode credit be number, not '$credit'" unless ($credit =~ m/^\d+$/); + + my $reqbody = 'url=' . uri_escape($url) . '&label=' . uri_escape($label); + $reqbody .= '&credit=' . $credit if ($credit > 0); + + $self->shuttle_url( $self->{url} . '/_set_link', + 'text/plain', + $reqbody, + undef + ) == 200; +} + + =head1 PRIVATE METHODS You could call those directly, but you don't have to. I hope. @@ -1524,7 +1552,8 @@ return if ($rv != 200 || !$resbody); - chomp($resbody); + # it seems that response can have multiple line endings + $resbody =~ s/[\r\n]+$//; ( $self->{name}, $self->{label}, $self->{dnum}, $self->{wnum}, $self->{size} ) = split(/\t/, $resbody, 5);