--- trunk/Estraier.pm 2006/01/06 20:39:58 55 +++ trunk/Estraier.pm 2006/01/06 20:58:26 57 @@ -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; } @@ -1454,6 +1454,76 @@ } +=head2 set_user + +Manage users of node + + $node->set_user( 'name', $mode ); + +C<$mode> can be one of: + +=over 4 + +=item 0 + +delete account + +=item 1 + +set administrative right for user + +=item 2 + +set user account as guest + +=back + +Return true on success, otherwise false. + +=cut + +sub set_user { + my $self = shift; + my ($name, $mode) = @_; + + return unless ($self->{url}); + croak "mode must be number, not '$mode'" unless ($mode =~ m/^\d+$/); + + $self->shuttle_url( $self->{url} . '/_set_user', + 'text/plain', + 'name=' . uri_escape($name) . '&mode=' . $mode, + undef + ) == 200; +} + + +=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