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 )