MediaWiki-Bot
view release on metacpan or search on metacpan
lib/MediaWiki/Bot.pm view on Meta::CPAN
my $summary = shift || "Reverting to old revision $revid";
my $text = $self->get_text($pagename, $revid);
my $res = $self->edit({
page => $pagename,
text => $text,
summary => $summary,
});
return $res;
}
sub undo {
my $self = shift;
my $page = shift;
my $revid = shift || croak "No revid given";
my $summary = shift || "Reverting revision #$revid";
my $after = shift;
$summary = "Reverting edits between #$revid & #$after" if defined($after); # Is that clear? Correct?
my ($edittoken, $basetimestamp, $starttimestamp) = $self->_get_edittoken($page);
my $hash = {
action => 'edit',
title => $page,
undo => $revid,
(undoafter => $after)x!! defined $after,
summary => $summary,
token => $edittoken,
starttimestamp => $starttimestamp,
basetimestamp => $basetimestamp,
};
my $res = $self->{api}->api($hash);
return $self->_handle_api_error() unless $res;
return $res;
}
sub get_last {
my $self = shift;
my $page = shift;
my $user = shift;
my $res = $self->{api}->api({
action => 'query',
titles => $page,
prop => 'revisions',
rvlimit => 1,
rvprop => 'ids|user',
rvexcludeuser => $user || '',
});
return $self->_handle_api_error() unless $res;
my (undef, $data) = %{ $res->{query}->{pages} };
my $revid = $data->{revisions}[0]->{revid};
return $revid;
}
sub update_rc {
warnings::warnif('deprecated', 'update_rc is deprecated, and may be removed '
. 'in a future release. Please use recentchanges(), which provides more '
. 'data, including rcid');
my $self = shift;
my $limit = shift || 'max';
my $options = shift;
my $hash = {
action => 'query',
list => 'recentchanges',
rcnamespace => 0,
rclimit => $limit,
};
$options->{max} = 1 unless $options->{max};
my $res = $self->{api}->list($hash, $options);
return $self->_handle_api_error() unless $res;
return RET_TRUE if not ref $res; # Not a ref when using callback
my @rc_table;
foreach my $hash (@{$res}) {
push(
@rc_table,
{
title => $hash->{title},
revid => $hash->{revid},
old_revid => $hash->{old_revid},
timestamp => $hash->{timestamp},
}
);
}
return @rc_table;
}
sub recentchanges {
my $self = shift;
my $ns;
my $limit;
my $options;
my $user;
my $show;
if (ref $_[0] eq 'HASH') { # unpack for new args
my %args = %{ +shift };
$ns = delete $args{ns};
$limit = delete $args{limit};
$user = delete $args{user};
if (ref $args{show} eq 'HASH') {
my @show;
while (my ($k, $v) = each %{ $args{show} }) {
push @show, '!'x!$v . $k;
}
$show = join '|', @show;
}
else {
$show = delete $args{show};
}
$options = shift;
( run in 0.341 second using v1.01-cache-2.11-cpan-2398b32b56e )