BBS-DiscuzX2
view release on metacpan or search on metacpan
lib/BBS/DiscuzX2.pm view on Meta::CPAN
$bbs->delete_thread({
fid => 2,
tid => 6,
pid => 9,
});
=over
=back
=over
=back
=cut
use strict;
use warnings;
package BBS::DiscuzX2;
use Moo;
use BBS::DiscuzX2::DB;
use WWW::Mechanize;
our $VERSION =0.01;
sub init_browser {
my ($self, %opt) = @_;
$self->{browser} = WWW::Mechanize->new(autocheck=>0);
while(my ($k, $v) = each %opt){
$self->{browser}->add_header($k => $v);
}
$self;
}
sub login {
my ($self, %opt) = @_;
$self->{browser}->add_header('Referer' => $opt{site});
my $url = $opt{site}.'member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1';
my $data = [
username=>$opt{user},
password=>$opt{passwd},
fastloginfield=>'username',
quickforward=>'yes',
handlekey=>'ls',
];
my $res = $self->{browser}->post($url, $data);
return unless($res->is_success);
$self->{site} = $opt{site};
$res = $self->{browser}->get($opt{site}.'forum.php');
return unless($res->is_success);
($self->{formhash}) = $res->decoded_content =~ m/formhash=(\w+)">/s;
return 1;
}
sub post_thread {
my ($self, $data) = @_;
my $url = "$self->{site}forum.php?mod=post&action=newthread&fid=$data->{fid}&extra=&topicsubmit=yes";
my $res = $self->{browser}->post($url,
[
'formhash' => $self->{formhash},
'message' => $data->{message},
'subject' => $data->{subject},
'usesig' => $data->{use_sig} // 1,
'allownoticeauthor' => $data->{notice_author} // 1,
'wysiwyg' => '1',
'newalbum' => '',
'posttime' => '',
'save' => '',
'uploadalbum' => '',
],
);
return unless($res->is_success);
my ($tid, $pid) = $res->as_string =~ m[action=edit&fid=\d+&tid=(\d+)&pid=(\d+)&]s;
return {
tid => $tid,
pid => $pid,
response => $res,
};
}
#sub append_thread {
# my ($self, $data) = @_;
# my $url = "$self->{site}forum.php?mod=misc&action=postappend&tid=$data->{tid}&pid=$data->{pid}&extra=&postappendsubmit=yes&infloat=yes";
# my $res = $self->{browser}->post($url,
# [
# 'formhash' => $self->{formhash},
# 'postappendmessage' => $data->{message},
# 'handlekey' => 'postappend',
# ],
# );
#
# return unless($res->is_success);
# return $res;
#}
sub delete_thread {
my ($self, $data) = @_;
my $url = "$self->{site}forum.php?mod=post&action=edit&extra=&editsubmit=yes";
my $referer = "$self->{site}forum.php?mod=post&action=edit&fid=$data->{fid}&tid=$data->{tid}&pid=$data->{pid}&page=1";
$self->{browser}->add_header('Referer' => $referer);
my $res = $self->{browser}->post($url,
[
fid => $data->{fid},
tid => $data->{tid},
pid => $data->{pid},
formhash => $self->{formhash},
allownoticeauthor => $data->{notice_author} // 1,
delattachop => $data->{del_attach} || 0,
delete => 1,
( run in 1.379 second using v1.01-cache-2.11-cpan-6aa56a78535 )