API-BigBlueButton

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

# NAME

API::BigBlueButton

# SYNOPSIS

    use API::BigBlueButton;

    my $bbb = API::BigBlueButton->new( server => 'bbb.myhost', secret => '1234567890' );
    my $res = $bbb->get_version;

    if ( $res->success ) {
        my $version = $res->response->version
    }
    else {
        warn "Error occured: " . $res->error . ", Status: " . $res->status;
    }

# DESCRIPTION

README.md  view on Meta::CPAN

- **new(%param)**

    Constructor

    %param:

    server

        Ip-address or hostname in which the server is located. Required parameter.

    secret

        Shared secret. Required parameter.

    timeout

        Connection timeout. Optional parameter.

    use\_https

        Use/not use https. Optional parameter.

# SEE ALSO

lib/API/BigBlueButton.pm  view on Meta::CPAN

=encoding utf-8

=head1 NAME

API::BigBlueButton

=head1 SYNOPSIS

    use API::BigBlueButton;

    my $bbb = API::BigBlueButton->new( server => 'bbb.myhost', secret => '1234567890' );
    my $res = $bbb->get_version;

    if ( $res->success ) {
        my $version = $res->response->version
    }
    else {
        warn "Error occured: " . $res->error . ", Status: " . $res->status;
    }

=head1 DESCRIPTION

lib/API/BigBlueButton.pm  view on Meta::CPAN

use strict;
use warnings;

use Carp qw/ confess /;
use LWP::UserAgent;

use API::BigBlueButton::Response;

use base qw/ API::BigBlueButton::Requests /;

use constant REQUIRE_PARAMS => qw/ secret server /;

our $VERSION = "0.015";

=head1 VERSION
 
version 0.015

=cut

=head1 METHODS

lib/API/BigBlueButton.pm  view on Meta::CPAN

=item B<new(%param)>

Constructor

%param:

server

    Ip-address or hostname in which the server is located. Required parameter.

secret

    Shared secret. Required parameter.

timeout

    Connection timeout. Optional parameter.

use_https

    Use/not use https. Optional parameter.
=cut

sub new {
    my $class = shift;

    $class = ref $class || $class;

    my $self = {
        timeout => 30,
        secret  => '',
        server  => '',
        use_https => 0,
        (@_),
    };

    for my $need_param ( REQUIRE_PARAMS ) {
        confess "Parameter $need_param required!" unless $self->{ $need_param };
    }

    return bless $self, $class;

lib/API/BigBlueButton/Requests.pm  view on Meta::CPAN


    my $chksum = $self->generate_checksum( 'create', \%params );

=cut

sub generate_checksum {
    my ( $self, $request, $params ) = @_;

    my $string = $request;
    $string .= $self->generate_url_query( $params ) if ( $params && ref $params );
    $string .= $self->{secret};

    return sha1_hex( $string );
}

=item B<generate_url_query($self,$params)>

Creating a query string

$params:

t/002_bigbluebutton.t  view on Meta::CPAN


use FindBin qw/ $Bin /;
use lib "$Bin/../lib";

use_ok( 'API::BigBlueButton' );

describe "Constructor" => sub {

    it "Normal creation" => sub {
        my $bbb = API::BigBlueButton->new(
            secret => 'mysecret',
            server => 'myserver',
        );
        ok( $bbb );
        is( $bbb->{server}, 'myserver' );
        is( $bbb->{secret}, 'mysecret' );
    };

    it "Empty required params" => sub {
        my $bbb;
        eval { $bbb = API::BigBlueButton->new };
        ok( $@ );

        eval { $bbb = API::BigBlueButton->new( secret => 'mysecret' ) };
        ok( $@ );
        like( $@, qr/Parameter server required/ );

        eval { $bbb = API::BigBlueButton->new( server => 'myserver' ) };
        ok( $@ );
        like( $@, qr/Parameter secret required/ );
    };
};

describe "abstract_request" => sub {

    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( {

t/003_bigbluebutton_requests.t  view on Meta::CPAN

use_ok( 'API::BigBlueButton' );

describe "Get version" => sub {
    it "Normal run" => sub {
        my $url;

        API::BigBlueButton->expects( 'request' )
            ->returns( sub { $url = $_[1]; return 1; } )->at_least(1);

        my $bbb = API::BigBlueButton->new(
            secret => 'mysecret',
            server => 'myserver',
        );

        ok( $bbb->get_version );
        is( $url, 'http://myserver/bigbluebutton/api' );
    };
};

describe "Other requests" => sub {
    my ( $bbb, $url );

    before all => sub {
        $bbb = API::BigBlueButton->new(
            secret => 'mysecret',
            server => 'myserver',
        );
    };

    before each => sub {
        undef $url;
        API::BigBlueButton->expects( 'request' )
            ->returns( sub { $url = $_[1]; return 1; } )->any_number;
    };



( run in 1.869 second using v1.01-cache-2.11-cpan-39bf76dae61 )