API-BigBlueButton
view release on metacpan or search on metacpan
lib/API/BigBlueButton.pm view on Meta::CPAN
};
for my $need_param ( REQUIRE_PARAMS ) {
confess "Parameter $need_param required!" unless $self->{ $need_param };
}
return bless $self, $class;
}
sub abstract_request {
my ( $self, $data ) = @_;
my $request = delete $data->{request};
my $checksum = delete $data->{checksum};
confess "Parameter request required!" unless $request;
my $url = $self->{use_https} ? 'https://' : 'http://';
$url .= $self->{server} . '/bigbluebutton/api/' . $request . '?';
if ( scalar keys %{ $data } > 0 ) {
$url .= $self->generate_url_query( $data );
$url .= '&';
}
$url .= 'checksum=' . $checksum;
return $self->request( $url );
}
sub request {
my ( $self, $url ) = @_;
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
This parameter is optional.
SEE MORE L<https://code.google.com/p/bigbluebutton/wiki/API#create>
=cut
sub create {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'create', \%params );
return $self->abstract_request( $data );
}
=item B<join($self,%params)>
Joins a user to the meeting specified in the meetingID parameter.
%params:
fullName
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
This parameter is optional.
SEE MORE L<https://code.google.com/p/bigbluebutton/wiki/API#join>
=cut
sub join {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'join', \%params );
return $self->abstract_request( $data );
}
=item B<ismeetingrunning($self,%params)>
This call enables you to simply check on whether or not a meeting is running by
looking it up with your meeting ID.
%params:
meetingID
This parameter is mandatory.
The meeting ID that identifies the meeting you are attempting to check on.
=cut
sub ismeetingrunning {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'isMeetingRunning', \%params );
return $self->abstract_request( $data );
}
=item B<end($self,%params)>
Use this to forcibly end a meeting and kick all participants out of the meeting.
%params:
meetingID
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
password
This parameter is mandatory.
The moderator password for this meeting. You can not end a meeting using the attendee password.
=cut
sub end {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'end', \%params );
return $self->abstract_request( $data );
}
=item B<getmeetinginfo($self,%params)>
This call will return all of a meeting's information,
including the list of attendees as well as start and end times.
%params:
meetingID
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
This parameter is mandatory.
The moderator password for this meeting.
You can not get the meeting information using the attendee password.
=cut
sub getmeetinginfo {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'getMeetingInfo', \%params );
return $self->abstract_request( $data );
}
=item B<getmeetings($self)>
This call will return a list of all the meetings found on this server.
=cut
sub getmeetings {
my ( $self ) = @_;
my $data = $self->_generate_data( 'getMeetings' );
return $self->abstract_request( $data );
}
=item B<getrecordings($self,%params)>
Retrieves the recordings that are available for playback for a given meetingID (or set of meeting IDs).
%params:
meetingID
This parameter is optional.
=cut
sub getrecordings {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'getRecordings', \%params );
return $self->abstract_request( $data );
}
=item B<publishrecordings($self,%params)>
Publish and unpublish recordings for a given recordID (or set of record IDs).
%params:
recordID
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
publish
This parameter is mandatory.
The value for publish or unpublish the recording(s). Available values: true or false.
=cut
sub publishrecordings {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'publishRecordings', \%params );
return $self->abstract_request( $data );
}
=item B<deleterecordings($self,%params)>
Delete one or more recordings for a given recordID (or set of record IDs).
%params:
recordID
This parameter is mandatory.
A record ID for specify the recordings to delete.
It can be a set of record IDs separated by commas.
=cut
sub deleterecordings {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'deleteRecordings', \%params );
return $self->abstract_request( $data );
}
=item B<getdefaultconfigxml($self)>
Retrieve the default config.xml.
SEE MORE L<https://code.google.com/p/bigbluebutton/wiki/API#getDefaultConfigXML>
=cut
sub getdefaultconfigxml {
my ( $self ) = @_;
my $data = $self->_generate_data( 'getDefaultConfigXML' );
return $self->abstract_request( $data );
}
=item B<setconfigxml($self,%params)>
Associate an custom config.xml file with the current session.
%params:
meetingID
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
This parameter is mandatory.
A valid config.xml file
SEE MORE L<https://code.google.com/p/bigbluebutton/wiki/API#setConfigXML>
=cut
sub setconfigxml {
my ( $self, %params ) = @_;
my $data = $self->_generate_data( 'setConfigXML', \%params );
return $self->abstract_request( $data );
}
=item B<generate_checksum($self,$request,$params)>
Create a checksum for the query
$request
Name of query, e.g. 'create' or 'join'
lib/API/BigBlueButton/Requests.pm view on Meta::CPAN
=cut
sub generate_url_query {
my ( $self, $params ) = @_;
my $string = CORE::join( '&', map { "$_=$params->{$_}" } sort keys %{ $params } );
return $string;
}
sub _generate_data {
my ( $self, $request, $params ) = @_;
$self->_check_params( $request, $params ) if $params;
$params->{checksum} = $self->generate_checksum( $request, $params );
$params->{request} = $request;
return $params;
}
sub _check_params {
t/002_bigbluebutton.t view on Meta::CPAN
my $checksum = '1233dfgdfg';
my $bbb;
before each => sub {
$bbb = API::BigBlueButton->new(
secret => 'mysecret',
server => 'myserver',
);
};
it "Without data" => sub {
my $url;
API::BigBlueButton->expects( 'request' )
->returns( sub { $url = $_[1]; return 1 } )->at_least(1);
my $res = $bbb->abstract_request( {
request => 'create',
checksum => $checksum,
} );
ok( $res );
like( $url, qr/myserver.+create\?checksum=$checksum/ );
};
it "With data" => sub {
my $url;
my $key = 'myparam';
my $val = 'myvalue';
API::BigBlueButton->expects( 'request' )
->returns( sub { $url = $_[1]; return 1 } )->at_least(1);
API::BigBlueButton->expects( 'generate_url_query' )
->returns( sub { return $key . '=' . $_[1]->{ $key } } )->at_least(1);
( run in 0.246 second using v1.01-cache-2.11-cpan-8d75d55dd25 )