Skip to content

Implement Java library for BigBlueButton #3

@GhaziTriki

Description

@GhaziTriki

Description
Create an official Java library for BigBlueButton.

Motivations
Currently official BigBlueButton holds the official PHP library https://github.com/bigbluebutton/bigbluebutton-api-php then Mconf maintains the Ruby library https://github.com/mconf/bigbluebutton-api-ruby

Gathering everyone around a community-maintained java library is very useful as example for implementing, JVM server side applications, CLI tools, implementing Selenium tests with Java and extending BigBlueButton server features for custom-built BigBlueButton platforms.

Technical Requirements

  • Support JVM 11+
  • Support BigBlueButton API 2.6+

Functional Requirements

  • Easy integration: The library should be easy to integrate with other applications and provide clear documentation and examples to help developers get started quickly.
  • Robust error handling: The library should have robust error handling to handle BigBlueButton API specific error scenarios that can occur during API calls and prevent misuses or wrong assumptions of the API understanding.
  • Flexibility: The library should be flexible and provide options to configure the library's behavior, such using environment variables, configuring hash algorithm.
  • Performance: The library should be optimized for performance and have minimal overhead by using third party libraries as less as possible.
  • Testing and coverage: The library should have unit tests implemented for almost every line. A 80%+ of code coverage is advised to comply to quality standards.

Implementation progress

The #2 PR is being implemented

Packaging

  • deploy to maven central

Library

  • unit tests
    • validate responses with mock XML files
  • hashing algorithms
  • logging configuration
  • validate url parameters

API

  • create
    • handle meeting ID format exception
    • pre-upload slide
    • handle meta
  • join
  • insertDocument
  • isMeetingRunning
  • end
  • getMeetingInfo
  • getMeetings
  • getRecordings
    • handle meta
  • publishRecordings
  • deleteRecordings
  • updateRecordings
    • handle meta
  • getRecordingTextTracks
    • handle meta
  • putRecordingTextTrack
  • hooks/create
  • hooks/destroy
  • hooks/list
  • exception handling

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions