API-ReviewBoard

 view release on metacpan or  search on metacpan

ReviewBoard.pm  view on Meta::CPAN

my $rb = ReviewBoard->new(  hostedurl => 'http://hostedurl.reviewboard.com',
                            username => 'user',
                            password => 'password' );


print "*****************************************************\n";
print "   UnitTest to exercise ReviewBoard Class API's     \n";
print "   Author: chetang\@cpan.org                        \n"; 
print "*****************************************************\n\n";

my $submitter = $rb->getSubmitter(changenum => '13638134');
print "Review Submitted by:\n", @$submitter, "\n\n";

my $reviewlink = $rb->getReviewBoardLink(changenum => '13027232');
print "Review Board Link:\n",$reviewlink,"\n\n";

my $description = $rb->getReviewDescription(changenum => '13027232');
print "Review Request description:\n",$description,"\n\n";

my $date_added = $rb->getReviewDateAdded(changenum  => '13027322');
print "Review Request Added Date:\n", $date_added, "\n\n";

my $last_updated = $rb->getReviewLastUpdated(changenum  => '13027232');
print "Review Request Last Updated Date:\n", $last_updated, "\n\n";

my $reviewers = $rb->getReviewers(changenum => '1302722');
print "Reviewers assigned to Review Request:\n @$reviewers \n\n";

my $summary = $rb->getSummary(changenum => '1302722');
print "Summary of Review Request:\n", $summary, "\n\n";

my $bug = $rb->getBugIds(changenum => '1302722');
print "Associated Bug list:\n", $bug, "\n\n";

my $commentscount = $rb->getReviewCommentsCount( reviewnum => '4108034');
print "No of comments added for Review Request:\n", $commentscount, "\n\n";

my $outgoingreviews = $rb->getOutgoingReviewsCount(user => 'users');
print "No of outgoing Review Requests by user 'users':\n",$outgoingreviews,"\n\n";

my $reviewsbydate = $rb->getOutgoingReviewsCountByDate(user => 'users', startdate => '2011-03-01', enddate => '2011-03-30');
print "No of outgoing Review Requests by user 'users' during time interval:\n", $reviewsbydate, "\n\n";

ReviewBoard.pm  view on Meta::CPAN


        # extract cookie from response header
        $self->{_cookie_jar}->extract_cookies($response);


        bless $self,$class;
        return $self;

}

=head2 $rb->getReviewBoardLink(changenum  => '112345');
Gets the review board link for a ACTIVE change request number.
=cut

sub getReviewBoardLink {
	my $self = shift;
	my %args  = validate(
		@_,
		{  changenum  => { type => SCALAR, optional => 0 },
		}
	);
	$self->{_changenum} = $args{changenum};
        
	# get request to get review number based on change number
	my $changenumlink =  $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
	my $request = new HTTP::Request('GET', $changenumlink);
        $self->{_cookie_jar}->add_cookie_header($request);
        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;
        
        $xml=~ m/.*"id": (\d+),.*/;
        my $reviewnum = $1;
        
        my $reviewlink =  $self->{_hostedurl}.'/r/'.$reviewnum;

        return $reviewlink;
}


=head2 $rb->getReviewDescription(changenum  => '112345');
The new review request description from ACTIVE change request.
=cut

sub getReviewDescription {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};


        # get request to get review number based on change number
        my $changenumlink =  $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $changenumlink);
        $self->{_cookie_jar}->add_cookie_header($request);
        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

        $xml =~ m/.*"description": "(.*)", "links".*/;
        my $description = $1;
        $description =~ s/(\\n)+/\n/g;

	return ($description);        
}

=head2 $rb->getReviewDateAdded(changenum  => '112345');

Gets the date on which ACTIVE change request was added.
=cut

sub getReviewDateAdded {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};

        my $changenumlink =  $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $changenumlink);
        $self->{_cookie_jar}->add_cookie_header($request);
        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

        $xml =~ m/.*"time_added": "(.*)", "summary".*/;
        my $dateadded = $1;

	return ($dateadded);
}



=head2 $rb->getReviewLastUpdated(changenum  => '112345');
Gets the date on which change request was last updated.
=cut

sub getReviewLastUpdated {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};
        
	my $changenumlink =  $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $changenumlink);
        $self->{_cookie_jar}->add_cookie_header($request);
        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

        $xml =~ /.*"last_updated": "(.*)", "description".*/;
        my $lastupdated = $1;


        return ($lastupdated);
}


=head2 $rb->getReviewers(changenum  => '112345');

Gets the name of the reviewers assigned for ACTIVE change request number.
The function returns an ARRAYREF to the user.

=cut

sub getReviewers {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};

        my $userlink = $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $userlink);
        $self->{_cookie_jar}->add_cookie_header($request);
        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

    $xml =~ m/.*"target_people": (.*), "testing_done".*/;
    my $name = $1;
    my @arr;
    my $count = @arr = $name =~ /"title": "(\w+)"/g;
    
    my $reviewers = \@arr;
    
    return ($reviewers);

}


=head2 $rb->getSubmitter(changenum  => '112345');

Gets the name of the submitter who submitted the ACTIVE change request.

=cut

sub getSubmitter {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};

        my $userlink = $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $userlink);
        $self->{_cookie_jar}->add_cookie_header($request);

        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

        $xml =~ m/.*"submitter": (.*), "screenshots".*/;
        my $name = $1;
        my @arr;
        my $count = @arr = $name =~ /"title": "(\w+)"/g;

        my $submitter = \@arr;

        return ($submitter);

}


=head2 $rb->getSummary(changenum  => '112345');

The review request's brief summary of ACTIVE change request.

=cut

sub getSummary {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};

        my $userlink = $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $userlink);
        $self->{_cookie_jar}->add_cookie_header($request);

        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

        $xml =~ m/.*"summary": "(.*)", "public".*/;
        my $summary = $1;


        return ($summary);
}


=head2 $rb->getSummary(changenum  => '112345');

Get the list of bugs closed or referenced by the ACTIVE change request.

=cut

sub getBugIds {
        my $self = shift;
        my %args  = validate(
                @_,
                {  changenum  => { type => SCALAR, optional => 0 },
                }
        );
        $self->{_changenum} = $args{changenum};

        my $userlink = $self->{_hostedurl}.'/api/review-requests/?changenum='.$self->{_changenum};
        my $request = new HTTP::Request('GET', $userlink);
        $self->{_cookie_jar}->add_cookie_header($request);
        my $response = $self->{_useragent}->simple_request($request);
        my $xml = $response->as_string;

        $xml =~ m/.*"bugs_closed": (.*), "changenum".*/;
        my $bugids = $1;
        return ($bugids);
}


=head2 $rb->getReviewCommentsCount(reviewnum  => '41080');
Gets the count of comments received for an ACTIVE change request.
=cut


sub getReviewCommentsCount {
        my $self = shift;
        my %args  = validate(
                @_,
                {  reviewnum  => { type => SCALAR, optional => 0 },
                }
        );



( run in 0.457 second using v1.01-cache-2.11-cpan-c333fce770f )