From 17a39a674fdbd1bbc2dd6dabdb1bc783888100bd Mon Sep 17 00:00:00 2001 From: Richard Alam <ritzalam@gmail.com> Date: Wed, 10 Jun 2015 15:53:07 +0000 Subject: [PATCH] - create a common message project --- bbb-common-message/.gitignore | 57 ++- bbb-common-message/build.sbt | 77 ++++ bbb-common-message/project/Build.scala | 0 bbb-common-message/project/build.properties | 1 + bbb-common-message/project/plugins.sbt | 8 + .../AssignPresenterRequestMessage.java | 63 +++ .../messages/BbbAppsIsAliveMessage.java | 53 +++ .../messages/BroadcastLayoutMessage.java | 80 ++++ .../BroadcastLayoutRequestMessage.java | 61 +++ .../common/messages/ChatKeyUtil.java | 13 + .../messages/ClearWhiteboardReplyMessage.java | 59 +++ .../ClearWhiteboardRequestMessage.java | 58 +++ .../common/messages/Constants.java | 130 ++++++ .../common/messages/CreateMeetingMessage.java | 37 ++ .../messages/DestroyMeetingMessage.java | 12 + .../messages/DisconnectAllUsersMessage.java | 47 ++ .../messages/DisconnectUserMessage.java | 51 +++ ...ctAllUsersFromVoiceConfRequestMessage.java | 56 +++ .../EjectUserFromMeetingRequestMessage.java | 61 +++ .../EjectUserFromVoiceConfRequestMessage.java | 62 +++ .../EjectUserFromVoiceRequestMessage.java | 63 +++ .../EnableWhiteboardRequestMessage.java | 58 +++ .../common/messages/EndMeetingMessage.java | 12 + .../messages/GetAllMeetingsRequest.java | 12 + .../common/messages/GetChatHistory.java | 57 +++ .../messages/GetChatHistoryReplyMessage.java | 65 +++ .../GetChatHistoryRequestMessage.java | 56 +++ .../GetCurrentLayoutReplyMessage.java | 74 +++ .../GetCurrentLayoutRequestMessage.java | 55 +++ .../messages/GetLockSettingsMessage.java | 52 +++ .../messages/GetPresentationInfoMessage.java | 58 +++ .../GetPresentationInfoReplyMessage.java | 72 +++ .../GetRecordingStatusReplyMessage.java | 59 +++ .../GetRecordingStatusRequestMessage.java | 54 +++ .../common/messages/GetSlideInfoMessage.java | 58 +++ .../GetUsersFromVoiceConfRequestMessage.java | 56 +++ .../common/messages/GetUsersReplyMessage.java | 65 +++ .../messages/GetUsersRequestMessage.java | 53 +++ .../GetWhiteboardShapesReplyMessage.java | 71 +++ .../common/messages/GoToSlideMessage.java | 53 +++ .../common/messages/IPublishedMessage.java | 5 + .../common/messages/ISubscribedMessage.java | 5 + .../messages/InitAudioSettingsMessage.java | 57 +++ .../InitPermissionsSettingMessage.java | 60 +++ .../messages/IsMeetingMutedReplyMessage.java | 63 +++ .../IsMeetingMutedRequestMessage.java | 57 +++ .../IsWhiteboardEnabledReplyMessage.java | 59 +++ .../IsWhiteboardEnabledRequestMessage.java | 59 +++ .../common/messages/KeepAliveMessage.java | 12 + .../common/messages/LockLayoutMessage.java | 74 +++ .../messages/LockLayoutRequestMessage.java | 75 ++++ .../messages/LockMuteUserRequestMessage.java | 69 +++ .../common/messages/LockUserMessage.java | 63 +++ .../common/messages/MeetingEndedMessage.java | 48 ++ .../messages/MeetingHasEndedMessage.java | 48 ++ .../common/messages/MeetingMutedMessage.java | 53 +++ .../common/messages/MeetingStateMessage.java | 66 +++ .../common/messages/MessageBuilder.java | 36 ++ .../messages/MessageFromJsonConverter.java | 88 ++++ .../common/messages/MessagingConstants.java | 66 +++ .../MuteAllExceptPresenterRequestMessage.java | 63 +++ .../messages/MuteAllRequestMessage.java | 63 +++ .../MuteUserInVoiceConfRequestMessage.java | 68 +++ .../messages/MuteUserRequestMessage.java | 69 +++ .../messages/MuteVoiceUserRequestMessage.java | 69 +++ .../NewPermissionsSettingMessage.java | 68 +++ .../messages/PresentationRemovedMessage.java | 56 +++ .../messages/PresenterAssignedMessage.java | 64 +++ .../RecordVoiceConfRequestMessage.java | 62 +++ .../RecordingStatusChangedMessage.java | 59 +++ .../common/messages/RegisterUserMessage.java | 73 +++ .../messages/RemovePresentationMessage.java | 53 +++ ...eboardAnnotationHistoryRequestMessage.java | 64 +++ .../messages/ResizeAndMoveSlideMessage.java | 68 +++ .../SendConversionCompletedMessage.java | 79 ++++ .../messages/SendConversionUpdateMessage.java | 70 +++ .../messages/SendCursorUpdateMessage.java | 58 +++ .../messages/SendLockSettingsMessage.java | 91 ++++ .../messages/SendPageCountErrorMessage.java | 80 ++++ .../messages/SendPrivateChatMessage.java | 115 +++++ .../messages/SendPublicChatMessage.java | 115 +++++ .../messages/SendSlideGeneratedMessage.java | 80 ++++ .../SendWhiteboardAnnotationReplyMessage.java | 71 +++ ...endWhiteboardAnnotationRequestMessage.java | 61 +++ .../SetRecordingStatusRequestMessage.java | 59 +++ .../messages/SetUserStatusRequestMessage.java | 64 +++ .../messages/SharePresentationMessage.java | 59 +++ ...StartRecordingVoiceConfRequestMessage.java | 56 +++ .../StopRecordingVoiceConfRequestMessage.java | 62 +++ .../messages/UndoWhiteboardReplyMessage.java | 68 +++ .../messages/UndoWhiteboardRequest.java | 58 +++ .../messages/UserConnectedToGlobalAudio.java | 59 +++ .../UserDisconnectedFromGlobalAudio.java | 57 +++ .../common/messages/UserJoinedMessage.java | 59 +++ .../messages/UserJoinedVoiceConfMessage.java | 87 ++++ .../messages/UserJoinedVoiceMessage.java | 66 +++ .../common/messages/UserLeavingMessage.java | 52 +++ .../common/messages/UserLeftMessage.java | 59 +++ .../messages/UserLeftVoiceConfMessage.java | 56 +++ .../common/messages/UserLeftVoiceMessage.java | 66 +++ .../messages/UserListeningOnlyMessage.java | 59 +++ .../UserLockedInVoiceConfMessage.java | 62 +++ .../common/messages/UserLockedMessage.java | 59 +++ .../messages/UserLoweredHandMessage.java | 64 +++ .../messages/UserMutedInVoiceConfMessage.java | 62 +++ .../messages/UserRaisedHandMessage.java | 59 +++ .../UserShareWebcamRequestMessage.java | 59 +++ .../messages/UserSharedWebcamMessage.java | 59 +++ .../messages/UserStatusChangedMessage.java | 65 +++ .../UserTalkingInVoiceConfMessage.java | 62 +++ .../UserUnshareWebcamRequestMessage.java | 59 +++ .../messages/UserUnsharedWebcamMessage.java | 59 +++ .../messages/UserVoiceMutedMessage.java | 66 +++ .../messages/UserVoiceTalkingMessage.java | 66 +++ .../bigbluebutton/common/messages/Util.java | 425 ++++++++++++++++++ .../messages/ValidateAuthTokenMessage.java | 69 +++ .../ValidateAuthTokenReplyMessage.java | 69 +++ .../ValidateAuthTokenTimeoutMessage.java | 69 +++ .../VoiceConfRecordingStartedMessage.java | 69 +++ 119 files changed, 7416 insertions(+), 3 deletions(-) create mode 100755 bbb-common-message/build.sbt create mode 100755 bbb-common-message/project/Build.scala create mode 100755 bbb-common-message/project/build.properties create mode 100755 bbb-common-message/project/plugins.sbt create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/AssignPresenterRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BbbAppsIsAliveMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ChatKeyUtil.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Constants.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/CreateMeetingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DestroyMeetingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectAllUsersMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectUserMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectAllUsersFromVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromMeetingRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EnableWhiteboardRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EndMeetingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetAllMeetingsRequest.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistory.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetLockSettingsMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetSlideInfoMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersFromVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetWhiteboardShapesReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GoToSlideMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IPublishedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ISubscribedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitAudioSettingsMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitPermissionsSettingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/KeepAliveMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockMuteUserRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockUserMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingEndedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingHasEndedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingMutedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingStateMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageBuilder.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageFromJsonConverter.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessagingConstants.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllExceptPresenterRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserInVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteVoiceUserRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/NewPermissionsSettingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresentationRemovedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresenterAssignedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordingStatusChangedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RemovePresentationMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RequestWhiteboardAnnotationHistoryRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ResizeAndMoveSlideMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionCompletedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionUpdateMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendCursorUpdateMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendLockSettingsMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPageCountErrorMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPrivateChatMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPublicChatMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendSlideGeneratedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetRecordingStatusRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetUserStatusRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SharePresentationMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartRecordingVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StopRecordingVoiceConfRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardRequest.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserConnectedToGlobalAudio.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserDisconnectedFromGlobalAudio.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceConfMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeavingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceConfMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserListeningOnlyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedInVoiceConfMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLoweredHandMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserMutedInVoiceConfMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserRaisedHandMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserShareWebcamRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserSharedWebcamMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserStatusChangedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserTalkingInVoiceConfMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnshareWebcamRequestMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnsharedWebcamMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceMutedMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceTalkingMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenReplyMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenTimeoutMessage.java create mode 100755 bbb-common-message/src/main/java/org/bigbluebutton/common/messages/VoiceConfRecordingStartedMessage.java diff --git a/bbb-common-message/.gitignore b/bbb-common-message/.gitignore index dbcfa68725..82f02806ec 100644 --- a/bbb-common-message/.gitignore +++ b/bbb-common-message/.gitignore @@ -1,5 +1,56 @@ -.classpath +.DS_Store +._.DS_Store* +.metadata .project +.classpath .settings -bin -build +.history +.worksheet +gen +**/*.swp +**/*~.nib +**/build/ +**/*.pbxuser +**/*.perspective +**/*.perspectivev3 +*.xcworkspace +*.xcuserdatad +**/target +target +*.iml +project/*.ipr +project/*.iml +project/*.iws +project/out +project/*/target +project/target +project/*/bin +project/*/build +project/*.iml +project/*/*.iml +project/.idea +project/.idea/* +.idea +.idea/* +.idea/**/* +.DS_Store +project/.DS_Store +project/*/.DS_Store +tm.out +tmlog*.log +*.tm*.epoch +out/ +provisioning/.vagrant +provisioning/*/.vagrant +provisioning/*/*.known +/sbt/akka-patterns-store/ +/daemon/src/build/ +*.lock +log/ +tmp/ +build/ +akka-patterns-store/ +lib_managed/ +.cache +bin/ + diff --git a/bbb-common-message/build.sbt b/bbb-common-message/build.sbt new file mode 100755 index 0000000000..a69f9aedf9 --- /dev/null +++ b/bbb-common-message/build.sbt @@ -0,0 +1,77 @@ + + +name := "bbb-common-message" + +organization := "org.bigbluebutton" + +version := "0.0.1" + +// We want to have our jar files in lib_managed dir. +// This way we'll have the right path when we import +// into eclipse. +retrieveManaged := true + +testOptions in Test += Tests.Argument(TestFrameworks.Specs2, "html", "console", "junitxml") + +testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/scalatest-reports") + +libraryDependencies ++= { + Seq( + "com.google.code.gson" % "gson" % "1.7.1" + )} + +seq(Revolver.settings: _*) + +//----------- +// Packaging +// +// Reference: +// http://xerial.org/blog/2014/03/24/sbt/ +// http://www.scala-sbt.org/sbt-pgp/usage.html +// http://www.scala-sbt.org/0.13/docs/Using-Sonatype.html +// http://central.sonatype.org/pages/requirements.html +// http://central.sonatype.org/pages/releasing-the-deployment.html +//----------- + +// Build pure Java lib (i.e. without scala) +// Do not append Scala versions to the generated artifacts +crossPaths := false + +// This forbids including Scala related libraries into the dependency +autoScalaLibrary := false + + +publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/dev/repo/maven-repo/releases" )) ) + +publishTo := { + val nexus = "https://oss.sonatype.org/" + if (isSnapshot.value) + Some("snapshots" at nexus + "content/repositories/snapshots") + else + Some("releases" at nexus + "service/local/staging/deploy/maven2") +} + +// Enables publishing to maven repo +publishMavenStyle := true + +publishArtifact in Test := false + +pomIncludeRepository := { _ => false } + +pomExtra := ( + <scm> + <url>git@github.com:bigbluebutton/bigbluebutton.git</url> + <connection>scm:git:git@github.com:bigbluebutton/bigbluebutton.git</connection> + </scm> + <developers> + <developer> + <id>ritzalam</id> + <name>Richard Alam</name> + <url>http://www.bigbluebutton.org</url> + </developer> + </developers>) + +licenses := Seq("LGPL-3.0" -> url("http://opensource.org/licenses/LGPL-3.0")) + +homepage := Some(url("http://www.bigbluebutton.org")) + \ No newline at end of file diff --git a/bbb-common-message/project/Build.scala b/bbb-common-message/project/Build.scala new file mode 100755 index 0000000000..e69de29bb2 diff --git a/bbb-common-message/project/build.properties b/bbb-common-message/project/build.properties new file mode 100755 index 0000000000..a6e117b610 --- /dev/null +++ b/bbb-common-message/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.8 diff --git a/bbb-common-message/project/plugins.sbt b/bbb-common-message/project/plugins.sbt new file mode 100755 index 0000000000..d33e342247 --- /dev/null +++ b/bbb-common-message/project/plugins.sbt @@ -0,0 +1,8 @@ +addSbtPlugin("io.spray" % "sbt-revolver" % "0.7.2") + +addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.2.0") + +addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0") + + + diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/AssignPresenterRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/AssignPresenterRequestMessage.java new file mode 100755 index 0000000000..891e36bcbb --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/AssignPresenterRequestMessage.java @@ -0,0 +1,63 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class AssignPresenterRequestMessage implements IPublishedMessage { + public static final String ASSIGN_PRESENTER_REQUEST = "assign_presenter_request_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final String newPresenterId; + public final String newPresenterName; + public final String assignedBy; + + public AssignPresenterRequestMessage(String meetingID, String newPresenterId, String newPresenterName, String assignedBy) { + this.meetingId = meetingID; + this.newPresenterId = newPresenterId; + this.newPresenterName = newPresenterName; + this.assignedBy = assignedBy; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.NEW_PRESENTER_ID, newPresenterId); + payload.put(Constants.NEW_PRESENTER_NAME, newPresenterName); + payload.put(Constants.ASSIGNED_BY, assignedBy); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(ASSIGN_PRESENTER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static AssignPresenterRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (ASSIGN_PRESENTER_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.NEW_PRESENTER_ID) + && payload.has(Constants.NEW_PRESENTER_NAME) + && payload.has(Constants.ASSIGNED_BY)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String newPresenterId = payload.get(Constants.NEW_PRESENTER_ID).getAsString(); + String newPresenterName = payload.get(Constants.NEW_PRESENTER_NAME).getAsString(); + String assignedBy = payload.get(Constants.ASSIGNED_BY).getAsString(); + + return new AssignPresenterRequestMessage(meetingId, newPresenterId, newPresenterName, assignedBy); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BbbAppsIsAliveMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BbbAppsIsAliveMessage.java new file mode 100755 index 0000000000..aebe68c3f8 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BbbAppsIsAliveMessage.java @@ -0,0 +1,53 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class BbbAppsIsAliveMessage implements ISubscribedMessage { + public static final String BBB_APPS_IS_ALIVE = "bbb_apps_is_alive_message"; + public static final String VERSION = "0.0.1"; + + public static final String TIMESTAMP = "timestamp"; + public static final String STARTED_ON = "started_on"; + + public final Long timestamp; + public final Long startedOn; + + public BbbAppsIsAliveMessage(Long startedOn, Long timestamp) { + this.startedOn = startedOn; + this.timestamp = timestamp; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(TIMESTAMP, timestamp); + payload.put(STARTED_ON, timestamp); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(BBB_APPS_IS_ALIVE, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static BbbAppsIsAliveMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (BBB_APPS_IS_ALIVE.equals(messageName)) { + + if (payload.has(TIMESTAMP) && payload.has(STARTED_ON)) { + Long timestamp = payload.get(TIMESTAMP).getAsLong(); + Long startedOn = payload.get(STARTED_ON).getAsLong(); + return new BbbAppsIsAliveMessage(startedOn, timestamp); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutMessage.java new file mode 100755 index 0000000000..1aaf863f5c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutMessage.java @@ -0,0 +1,80 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class BroadcastLayoutMessage implements ISubscribedMessage { + public static final String BROADCAST_LAYOUT = "broadcast_layout_message"; + public static final String VERSION = "0.0.1"; + + public static final String SET_BY_USERID = "set_by_userid"; + public static final String LAYOUT = "layout"; + public static final String LOCKED = "locked"; + public static final String USERS = "users"; + + public final String meetingId; + public final String setByUserid; + public final String layout; + public final Boolean locked; + public final ArrayList<String> users; + + public BroadcastLayoutMessage(String meetingId, String setByUserid, String layout, Boolean locked, ArrayList<String> users) { + this.meetingId = meetingId; + this.setByUserid = setByUserid; + this.layout = layout; + this.locked = locked; + this.users = users; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(SET_BY_USERID, setByUserid); + payload.put(LAYOUT, layout); + payload.put(LOCKED, locked); + payload.put(USERS, users); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(BROADCAST_LAYOUT, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static BroadcastLayoutMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (BROADCAST_LAYOUT.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(LOCKED) + && payload.has(SET_BY_USERID) + && payload.has(USERS) + && payload.has(LAYOUT)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String setByUserid = payload.get(SET_BY_USERID).getAsString(); + String layout = payload.get(LAYOUT).getAsString(); + Boolean locked = payload.get(LOCKED).getAsBoolean(); + JsonArray usersArr = (JsonArray) payload.get(USERS); + + Util util = new Util(); + + ArrayList<String> users = util.extractUserids(usersArr); + return new BroadcastLayoutMessage(id, setByUserid, layout, locked, users); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutRequestMessage.java new file mode 100755 index 0000000000..2aaa198cce --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/BroadcastLayoutRequestMessage.java @@ -0,0 +1,61 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class BroadcastLayoutRequestMessage implements ISubscribedMessage { + public static final String BROADCAST_LAYOUT_REQUEST = "broadcast_layout_request_message"; + public static final String VERSION = "0.0.1"; + + public final static String LAYOUT = "layout"; + + public final String meetingId; + public final String userId; + public final String layout; + + public BroadcastLayoutRequestMessage(String meetingId, String userId, String layout) { + this.meetingId = meetingId; + this.userId = userId; + this.layout = layout; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(LAYOUT, layout); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(BROADCAST_LAYOUT_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static BroadcastLayoutRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (BROADCAST_LAYOUT_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(LAYOUT)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String layout = payload.get(LAYOUT).getAsString(); + return new BroadcastLayoutRequestMessage(id, userid, layout); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ChatKeyUtil.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ChatKeyUtil.java new file mode 100755 index 0000000000..97d1f403f6 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ChatKeyUtil.java @@ -0,0 +1,13 @@ +package org.bigbluebutton.common.messages; + +public class ChatKeyUtil { + public static final String CHAT_TYPE = "chatType"; + public static final String FROM_USERID = "fromUserID"; + public static final String FROM_USERNAME = "fromUsername"; + public static final String FROM_COLOR = "fromColor"; + public static final String FROM_TIME = "fromTime"; + public static final String FROM_TZ_OFFSET = "fromTimezoneOffset"; + public static final String TO_USERID = "toUserID"; + public static final String TO_USERNAME = "toUsername"; + public static final String MESSAGE = "message"; +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardReplyMessage.java new file mode 100755 index 0000000000..85fc4053b2 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardReplyMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ClearWhiteboardReplyMessage implements ISubscribedMessage { + + public static final String WHITEBOARD_CLEARED_MESSAGE = "whiteboard_cleared_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String whiteboardId; + public final String requesterId; + + + public ClearWhiteboardReplyMessage(String meetingId, String requesterId, String whiteboardId) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(WHITEBOARD_CLEARED_MESSAGE, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static ClearWhiteboardReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (WHITEBOARD_CLEARED_MESSAGE.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + return new ClearWhiteboardReplyMessage(meetingId, requesterId, whiteboardId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardRequestMessage.java new file mode 100755 index 0000000000..494578c1ec --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ClearWhiteboardRequestMessage.java @@ -0,0 +1,58 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ClearWhiteboardRequestMessage implements ISubscribedMessage { + public static final String CLEAR_WHITEBOARD_REQUEST = "clear_whiteboard_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String whiteboardId; + public final String requesterId; + + + public ClearWhiteboardRequestMessage(String meetingId, String requesterId, String whiteboardId) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(CLEAR_WHITEBOARD_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static ClearWhiteboardRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (CLEAR_WHITEBOARD_REQUEST.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + return new ClearWhiteboardRequestMessage(meetingId, requesterId, whiteboardId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Constants.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Constants.java new file mode 100755 index 0000000000..381453eb9d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Constants.java @@ -0,0 +1,130 @@ +package org.bigbluebutton.common.messages; + +public class Constants { + public static final String NAME = "name"; + public static final String HEADER = "header"; + public static final String PAYLOAD = "payload"; + public static final String MEETING_ID = "meeting_id"; + public static final String EXTERNAL_MEETING_ID = "external_meeting_id"; + public static final String TIMESTAMP = "timestamp"; + public static final String USER_ID = "userid"; + public static final String RECORDED = "recorded"; + public static final String MEETING_NAME = "meeting_name"; + public static final String MEETING_MUTED = "meetingMuted"; + public static final String VOICE_CONF = "voice_conf"; + public static final String DURATION = "duration"; + public static final String AUTH_TOKEN = "auth_token"; + public static final String ROLE = "role"; + public static final String EXT_USER_ID = "external_user_id"; + public static final String EXTERN_USERID = "extern_userid"; + public static final String REQUESTER_ID = "requester_id"; + public static final String REPLY_TO = "reply_to"; + public static final String LOWERED_BY = "lowered_by"; + public static final String STREAM = "stream"; + public static final String LOCKED = "locked"; + public static final String SETTINGS = "settings"; + public static final String LOCK = "lock"; + public static final String EXCEPT_USERS = "except_users"; + public static final String STATUS = "status"; + public static final String VALUE = "value"; + public static final String NEW_PRESENTER_ID = "new_presenter_id"; + public static final String NEW_PRESENTER_NAME = "new_presenter_name"; + public static final String ASSIGNED_BY = "assigned_by"; + public static final String RECORDING = "recording"; + public static final String AUTO_START_RECORDING = "auto_start_recording"; + public static final String ALLOW_START_STOP_RECORDING = "allow_start_stop_recording"; + public static final String LAYOUT_ID = "layout_id"; + public static final String LISTENONLY = "listenOnly"; + public static final String LISTEN_ONLY = "listen_only"; + public static final String POLL = "poll"; + public static final String POLL_ID = "poll_id"; + public static final String FORCE = "force"; + public static final String RESPONSE = "response"; + public static final String PRESENTATION_ID = "presentation_id"; + public static final String X_OFFSET = "x_offset"; + public static final String Y_OFFSET = "y_offset"; + public static final String WIDTH_RATIO = "width_ratio"; + public static final String HEIGHT_RATIO = "height_ratio"; + public static final String PAGE = "page"; + public static final String SHARE = "share"; + public static final String PRESENTATIONS = "presentations"; + public static final String MESSAGE_KEY = "message_key"; + public static final String CODE = "code"; + public static final String PRESENTATION_NAME = "presentation_name"; + public static final String NUM_PAGES = "num_pages"; + public static final String MAX_NUM_PAGES = "max_num_pages"; + public static final String PAGES_COMPLETED = "pages_completed"; + public static final String MUTE = "mute"; + public static final String CALLER_ID_NUM = "caller_id_num"; + public static final String CALLER_ID_NAME = "caller_id_name"; + public static final String CALLERNUM = "callernum"; + public static final String CALLERNAME = "callername"; + public static final String TALKING = "talking"; + public static final String USER = "user"; + public static final String MUTED = "muted"; + public static final String VOICE_USER = "voice_user"; + public static final String VOICEUSER = "voiceUser"; + public static final String RECORDING_FILE = "recording_file"; + public static final String ANNOTATION = "annotation"; + public static final String WHITEBOARD_ID = "whiteboard_id"; + public static final String ENABLE = "enable"; + public static final String PRESENTER = "presenter"; + public static final String USERS = "users"; + public static final String RAISE_HAND = "raise_hand"; + public static final String HAS_STREAM = "has_stream"; + public static final String WEBCAM_STREAM = "webcam_stream"; + public static final String PHONE_USER = "phone_user"; + public static final String PERMISSIONS = "permissions"; + public static final String VALID = "valid"; + public static final String CHAT_HISTORY = "chat_history"; + public static final String MESSAGE = "message"; + public static final String SET_BY_USER_ID = "set_by_user_id"; + public static final String POLLS = "polls"; + public static final String REASON = "reason"; + public static final String RESPONDER = "responder"; + public static final String PRESENTATION_INFO = "presentation_info"; + public static final String SHAPES = "shapes"; + public static final String SHAPE = "shape"; + public static final String SHAPE_ID = "shape_id"; + public static final String PRESENTATION = "presentation"; + public static final String ID = "id"; + public static final String CURRENT = "current"; + public static final String PAGES = "pages"; + public static final String WEB_USER_ID = "web_user_id"; + public static final String WEB_USERID = "web_userid"; + public static final String JOINED = "joined"; + public static final String X_PERCENT = "x_percent"; + public static final String Y_PERCENT = "y_percent"; + public static final String KEEP_ALIVE_ID = "keep_alive_id"; + public static final String INTERNAL_USER_ID = "internal_user_id"; + public static final String MODERATOR_PASS = "moderator_pass"; + public static final String VIEWER_PASS = "viewer_pass"; + public static final String CREATE_TIME = "create_time"; + public static final String CREATE_DATE = "create_date"; + public static final String PRESENTATION_BASE_URL = "presentation_base_url"; + public static final String DISABLE_CAMERA = "disable_camera"; + public static final String LOCK_ON_JOIN_CONFIGURABLE = "lock_on_join_configurable"; + public static final String DISABLE_MICROPHONE = "disable_microphone"; + public static final String DISABLE_PRIVATE_CHAT = "disable_private_chat"; + public static final String DISABLE_PUBLIC_CHAT = "disable_public_chat"; + public static final String LOCK_ON_JOIN = "lock_on_join"; + public static final String LOCKED_LAYOUT = "locked_layout"; + public static final String CHAT_TYPE = "chat_type"; + public static final String TO_USERNAME = "to_username"; + public static final String FROM_USERNAME = "from_username"; + public static final String FROM_USERID = "from_userid"; + public static final String FROM_TZ_OFFSET = "from_tz_offset"; + public static final String FROM_COLOR = "from_color"; + public static final String TO_USERID = "to_userid"; + public static final String FROM_TIME = "from_time"; + public static final String PERM_DISABLE_CAM = "disableCam"; + public static final String PERM_DISABLE_MIC = "disableMic"; + public static final String PERM_DISABLE_PRIVCHAT = "disablePrivChat"; + public static final String PERM_DISABLE_PUBCHAT = "disablePubChat"; + public static final String PERM_LOCKED_LAYOUT = "lockedLayout"; + public static final String PERM_LOCK_ON_JOIN = "lockOnJoin"; + public static final String PERM_LOCK_ON_JOIN_CONFIG = "lockOnJoinConfigurable"; + public static final String ENABLED = "enabled"; +} + + diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/CreateMeetingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/CreateMeetingMessage.java new file mode 100755 index 0000000000..461c0d283f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/CreateMeetingMessage.java @@ -0,0 +1,37 @@ +package org.bigbluebutton.common.messages; + +public class CreateMeetingMessage implements IPublishedMessage { + public static final String CREATE_MEETING_REQUEST_EVENT = "create_meeting_request"; + public static final String VERSION = "0.0.1"; + + public final String id; + public final String externalId; + public final String name; + public final Boolean record; + public final String voiceBridge; + public final Long duration; + public final Boolean autoStartRecording; + public final Boolean allowStartStopRecording; + public final String moderatorPass; + public final String viewerPass; + public final Long createTime; + public final String createDate; + + public CreateMeetingMessage(String id, String externalId, String name, Boolean record, String voiceBridge, + Long duration, Boolean autoStartRecording, + Boolean allowStartStopRecording, String moderatorPass, + String viewerPass, Long createTime, String createDate) { + this.id = id; + this.externalId = externalId; + this.name = name; + this.record = record; + this.voiceBridge = voiceBridge; + this.duration = duration; + this.autoStartRecording = autoStartRecording; + this.allowStartStopRecording = allowStartStopRecording; + this.moderatorPass = moderatorPass; + this.viewerPass = viewerPass; + this.createTime = createTime; + this.createDate = createDate; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DestroyMeetingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DestroyMeetingMessage.java new file mode 100755 index 0000000000..4e040e4f4b --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DestroyMeetingMessage.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.common.messages; + +public class DestroyMeetingMessage implements IPublishedMessage { + public static final String DESTROY_MEETING_REQUEST_EVENT = "destroy_meeting_request_event"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + + public DestroyMeetingMessage(String meetingId) { + this.meetingId = meetingId; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectAllUsersMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectAllUsersMessage.java new file mode 100755 index 0000000000..b95f3ad719 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectAllUsersMessage.java @@ -0,0 +1,47 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class DisconnectAllUsersMessage implements IPublishedMessage { + public static final String DISCONNECT_All_USERS = "disconnect_all_users_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + + public DisconnectAllUsersMessage(String meetingID) { + this.meetingId = meetingID; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(DISCONNECT_All_USERS, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static DisconnectAllUsersMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (DISCONNECT_All_USERS.equals(messageName)) { + if (payload.has(Constants.MEETING_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + + return new DisconnectAllUsersMessage(meetingId); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectUserMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectUserMessage.java new file mode 100755 index 0000000000..4d21a7e51f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/DisconnectUserMessage.java @@ -0,0 +1,51 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class DisconnectUserMessage implements IPublishedMessage { + public static final String DISCONNECT_USER = "disconnect_user_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + + public DisconnectUserMessage(String meetingID, String userId) { + this.meetingId = meetingID; + this.userId = userId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(DISCONNECT_USER, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static DisconnectUserMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (DISCONNECT_USER.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String userId = payload.get(Constants.USER_ID).getAsString(); + + return new DisconnectUserMessage(meetingId, userId); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectAllUsersFromVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectAllUsersFromVoiceConfRequestMessage.java new file mode 100755 index 0000000000..28ba956a06 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectAllUsersFromVoiceConfRequestMessage.java @@ -0,0 +1,56 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class EjectAllUsersFromVoiceConfRequestMessage { + public static final String EJECT_ALL_VOICE_USERS_REQUEST = "eject_all_users_from_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + + public final String meetingId; + public final String voiceConfId; + + public EjectAllUsersFromVoiceConfRequestMessage(String meetingId, String voiceConfId) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(EJECT_ALL_VOICE_USERS_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static EjectAllUsersFromVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (EJECT_ALL_VOICE_USERS_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + return new EjectAllUsersFromVoiceConfRequestMessage(id, voiceConfId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromMeetingRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromMeetingRequestMessage.java new file mode 100755 index 0000000000..3476aec138 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromMeetingRequestMessage.java @@ -0,0 +1,61 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class EjectUserFromMeetingRequestMessage implements ISubscribedMessage { + public static final String EJECT_USER_FROM_MEETING_REQUEST = "eject_user_from_meeting_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String ejectedBy; + + private static final String EJECTED_BY = "ejected_by"; + + public EjectUserFromMeetingRequestMessage(String meetingId, String userId, String ejectedBy) { + this.meetingId = meetingId; + this.userId = userId; + this.ejectedBy = ejectedBy; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(EJECTED_BY, ejectedBy); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(EJECT_USER_FROM_MEETING_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static EjectUserFromMeetingRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (EJECT_USER_FROM_MEETING_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(EJECTED_BY)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String ejectedBy = payload.get(EJECTED_BY).getAsString(); + return new EjectUserFromMeetingRequestMessage(id, userid, ejectedBy); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceConfRequestMessage.java new file mode 100755 index 0000000000..d9fd401687 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceConfRequestMessage.java @@ -0,0 +1,62 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class EjectUserFromVoiceConfRequestMessage { + public static final String EJECT_VOICE_USER_REQUEST = "eject_user_from_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + + public final String meetingId; + public final String voiceConfId; + public final String voiceUserId; + + public EjectUserFromVoiceConfRequestMessage(String meetingId, String voiceConfId, String voiceUserId) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(EJECT_VOICE_USER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static EjectUserFromVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (EJECT_VOICE_USER_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + return new EjectUserFromVoiceConfRequestMessage(id, voiceConfId, voiceUserId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceRequestMessage.java new file mode 100755 index 0000000000..e3715ad2cd --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EjectUserFromVoiceRequestMessage.java @@ -0,0 +1,63 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class EjectUserFromVoiceRequestMessage implements ISubscribedMessage { + public static final String EJECT_USER_FROM_VOICE_REQUEST = "eject_user_from_voice_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String USER_ID = "user_id"; + + public final String meetingId; + public final String requesterId; + public final String userId; + + public EjectUserFromVoiceRequestMessage(String meetingId, String requesterId, String userId) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.userId = userId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(USER_ID, userId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(EJECT_USER_FROM_VOICE_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static EjectUserFromVoiceRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (EJECT_USER_FROM_VOICE_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(USER_ID)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + String userId = payload.get(USER_ID).getAsString(); + return new EjectUserFromVoiceRequestMessage(id, requesterId, userId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EnableWhiteboardRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EnableWhiteboardRequestMessage.java new file mode 100755 index 0000000000..cbc38364d4 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EnableWhiteboardRequestMessage.java @@ -0,0 +1,58 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class EnableWhiteboardRequestMessage implements ISubscribedMessage { + public static final String ENABLE_WHITEBOARD_REQUEST = "enable_whiteboard_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final boolean enable; + + public EnableWhiteboardRequestMessage(String meetingId, + String requesterId, boolean enable) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.enable = enable; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.ENABLE, enable); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(ENABLE_WHITEBOARD_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static EnableWhiteboardRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (ENABLE_WHITEBOARD_REQUEST.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.ENABLE) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + boolean enable = payload.get(Constants.ENABLE).getAsBoolean(); + + return new EnableWhiteboardRequestMessage(meetingId, requesterId, enable); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EndMeetingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EndMeetingMessage.java new file mode 100755 index 0000000000..f2aa8d2df9 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/EndMeetingMessage.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.common.messages; + +public class EndMeetingMessage implements IPublishedMessage { + public static final String END_MEETING_REQUEST_EVENT = "end_meeting_request_event"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + + public EndMeetingMessage(String meetingId) { + this.meetingId = meetingId; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetAllMeetingsRequest.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetAllMeetingsRequest.java new file mode 100755 index 0000000000..f4d321f357 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetAllMeetingsRequest.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.common.messages; + +public class GetAllMeetingsRequest implements IPublishedMessage { + public static final String GET_ALL_MEETINGS_REQUEST_EVENT = "get_all_meetings_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + + public GetAllMeetingsRequest(String meetingId) { + this.meetingId = meetingId; + } +} \ No newline at end of file diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistory.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistory.java new file mode 100755 index 0000000000..d034eb4c1d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistory.java @@ -0,0 +1,57 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetChatHistory implements IPublishedMessage { + public static final String GET_CHAT_HISTORY_REQUEST = "get_chat_history_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String replyTo; + public final String requesterId; + + + public GetChatHistory(String meetingId, String requesterId, String replyTo) { + this.meetingId = meetingId; + this.replyTo = replyTo; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REPLY_TO, replyTo); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_CHAT_HISTORY_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static GetChatHistory fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_CHAT_HISTORY_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REPLY_TO) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + return new GetChatHistory(meetingId, replyTo, requesterId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryReplyMessage.java new file mode 100755 index 0000000000..b7a4203cfc --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryReplyMessage.java @@ -0,0 +1,65 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetChatHistoryReplyMessage implements ISubscribedMessage { + public static final String GET_CHAT_HISTORY_REPLY = "get_chat_history_reply"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final ArrayList<Map<String, Object>> chatHistory; + + + public GetChatHistoryReplyMessage(String meetingId, String requesterId, ArrayList<Map<String, Object>> chatHistory) { + this.meetingId = meetingId; + this.chatHistory = chatHistory; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.CHAT_HISTORY, chatHistory); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_CHAT_HISTORY_REPLY, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static GetChatHistoryReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_CHAT_HISTORY_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.CHAT_HISTORY) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + JsonArray history = (JsonArray) payload.get(Constants.CHAT_HISTORY); + + Util util = new Util(); + + ArrayList<Map<String, Object>> chatHistory = util.extractChatHistory(history); + + return new GetChatHistoryReplyMessage(meetingId, requesterId, chatHistory); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryRequestMessage.java new file mode 100755 index 0000000000..646e9a990d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetChatHistoryRequestMessage.java @@ -0,0 +1,56 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +public class GetChatHistoryRequestMessage implements IPublishedMessage { + public static final String GET_CHAT_HISTORY_REQUEST = "get_chat_history_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String replyTo; + public final String requesterId; + + + public GetChatHistoryRequestMessage(String meetingId, String requesterId, String replyTo) { + this.meetingId = meetingId; + this.replyTo = replyTo; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REPLY_TO, replyTo); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_CHAT_HISTORY_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static GetChatHistoryRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_CHAT_HISTORY_REQUEST.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REPLY_TO) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + return new GetChatHistoryRequestMessage(meetingId, replyTo, requesterId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutReplyMessage.java new file mode 100755 index 0000000000..d14fe7cc19 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutReplyMessage.java @@ -0,0 +1,74 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class GetCurrentLayoutReplyMessage implements ISubscribedMessage { + public static final String GET_CURRENT_LAYOUT_REPLY = "get_current_layout_reply_message"; + public static final String VERSION = "0.0.1"; + + public static final String SET_BY_USERID = "set_by_userid"; + public static final String REQUESTED_BY_USERID = "requested_by_userid"; + public static final String LAYOUT = "layout"; + public static final String LOCKED = "locked"; + + public final String meetingId; + public final String requestedByUserid; + public final String setByUserid; + public final String layout; + public final Boolean locked; + + public GetCurrentLayoutReplyMessage(String meetingId, String requestedByUserid, String setByUserid, String layout, Boolean locked) { + this.meetingId = meetingId; + this.requestedByUserid = requestedByUserid; + this.setByUserid = setByUserid; + this.layout = layout; + this.locked = locked; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(REQUESTED_BY_USERID, requestedByUserid); + payload.put(SET_BY_USERID, setByUserid); + payload.put(LAYOUT, layout); + payload.put(LOCKED, locked); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_CURRENT_LAYOUT_REPLY, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetCurrentLayoutReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_CURRENT_LAYOUT_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(REQUESTED_BY_USERID) + && payload.has(SET_BY_USERID) + && payload.has(LOCKED) + && payload.has(LAYOUT)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String requestedByUserid = payload.get(REQUESTED_BY_USERID).getAsString(); + String setByUserid = payload.get(SET_BY_USERID).getAsString(); + String layout = payload.get(LAYOUT).getAsString(); + Boolean locked = payload.get(LOCKED).getAsBoolean(); + return new GetCurrentLayoutReplyMessage(id, requestedByUserid, setByUserid, layout, locked); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutRequestMessage.java new file mode 100755 index 0000000000..c63028ea21 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetCurrentLayoutRequestMessage.java @@ -0,0 +1,55 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class GetCurrentLayoutRequestMessage implements ISubscribedMessage { + public static final String GET_CURRENT_LAYOUT_REQUEST = "get_current_layout_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + + + public GetCurrentLayoutRequestMessage(String meetingId, String userId) { + this.meetingId = meetingId; + this.userId = userId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_CURRENT_LAYOUT_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetCurrentLayoutRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_CURRENT_LAYOUT_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + return new GetCurrentLayoutRequestMessage(id, userid); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetLockSettingsMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetLockSettingsMessage.java new file mode 100755 index 0000000000..6b164e75cf --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetLockSettingsMessage.java @@ -0,0 +1,52 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetLockSettingsMessage implements IPublishedMessage { + public static final String GET_LOCK_SETTINGS = "get_lock_settings"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + + public GetLockSettingsMessage(String meetingId, String userId) { + this.meetingId = meetingId; + this.userId = userId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_LOCK_SETTINGS, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static GetLockSettingsMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_LOCK_SETTINGS.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String userId = payload.get(Constants.USER_ID).getAsString(); + + return new GetLockSettingsMessage(meetingId, userId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoMessage.java new file mode 100755 index 0000000000..e25af38764 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoMessage.java @@ -0,0 +1,58 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetPresentationInfoMessage implements IPublishedMessage { + public static final String GET_PRESENTATION_INFO = "get_presentation_info"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final String replyTo; + + public GetPresentationInfoMessage(String meetingId, String requesterId, String replyTo) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.replyTo = replyTo; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.REPLY_TO, replyTo); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_PRESENTATION_INFO, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetPresentationInfoMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_PRESENTATION_INFO.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID) + && payload.has(Constants.REPLY_TO)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + + return new GetPresentationInfoMessage(meetingId, requesterId, replyTo); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoReplyMessage.java new file mode 100755 index 0000000000..155d28444f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetPresentationInfoReplyMessage.java @@ -0,0 +1,72 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetPresentationInfoReplyMessage implements IPublishedMessage { + public static final String GET_PRESENTATION_INFO_REPLY = "get_presentation_info_reply"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final Map<String, Object> presenter; + public final ArrayList<Map<String, Object>> presentations; + + public GetPresentationInfoReplyMessage(String meetingId, String requesterId, + Map<String, Object> presenter, ArrayList<Map<String, Object>> presentations) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.presenter = presenter; + this.presentations = presentations; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.PRESENTER, presenter); + payload.put(Constants.PRESENTATIONS, presentations); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_PRESENTATION_INFO_REPLY, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetPresentationInfoReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_PRESENTATION_INFO_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID) + && payload.has(Constants.PRESENTER) + && payload.has(Constants.PRESENTATIONS)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + JsonObject presenterJsonObject = payload.get(Constants.PRESENTER).getAsJsonObject(); + + Util util = new Util(); + Map<String, Object> presenter = util.extractCurrentPresenter(presenterJsonObject); + + JsonArray presentationsJsonArray = payload.get(Constants.PRESENTATIONS).getAsJsonArray(); + ArrayList<Map<String, Object>> presentations = util.extractPresentations(presentationsJsonArray); + + return new GetPresentationInfoReplyMessage(meetingId, requesterId, presenter, presentations); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusReplyMessage.java new file mode 100755 index 0000000000..319143f28d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusReplyMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class GetRecordingStatusReplyMessage implements ISubscribedMessage { + public static final String Get_RECORDING_STATUS_REPLY = "get_recording_status_reply"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean recording; + + public GetRecordingStatusReplyMessage(String meetingId, String userId, Boolean recording) { + this.meetingId = meetingId; + this.userId = userId; + this.recording = recording; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.RECORDING, recording); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(Get_RECORDING_STATUS_REPLY, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetRecordingStatusReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (Get_RECORDING_STATUS_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.RECORDING)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean recording = payload.get(Constants.RECORDING).getAsBoolean(); + return new GetRecordingStatusReplyMessage(id, userid, recording); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusRequestMessage.java new file mode 100755 index 0000000000..ead0ae5b00 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetRecordingStatusRequestMessage.java @@ -0,0 +1,54 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class GetRecordingStatusRequestMessage implements ISubscribedMessage { + public static final String GET_RECORDING_STATUS_REQUEST = "get_recording_status_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + + public GetRecordingStatusRequestMessage(String meetingId, String userId) { + this.meetingId = meetingId; + this.userId = userId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_RECORDING_STATUS_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetRecordingStatusRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_RECORDING_STATUS_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + return new GetRecordingStatusRequestMessage(id, userid); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetSlideInfoMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetSlideInfoMessage.java new file mode 100755 index 0000000000..78015ec8b4 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetSlideInfoMessage.java @@ -0,0 +1,58 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetSlideInfoMessage implements IPublishedMessage { + public static final String GET_SLIDE_INFO = "get_slide_info"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final String replyTo; + + public GetSlideInfoMessage(String meetingId, String requesterId, String replyTo){ + this.meetingId = meetingId; + this.requesterId = requesterId; + this.replyTo = replyTo; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.REPLY_TO, replyTo); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_SLIDE_INFO, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetSlideInfoMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_SLIDE_INFO.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID) + && payload.has(Constants.REPLY_TO)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + + return new GetSlideInfoMessage(meetingId, requesterId, replyTo); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersFromVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersFromVoiceConfRequestMessage.java new file mode 100755 index 0000000000..8e295656c0 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersFromVoiceConfRequestMessage.java @@ -0,0 +1,56 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class GetUsersFromVoiceConfRequestMessage { + public static final String GET_VOICE_USERS_REQUEST = "get_users_from_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + + public final String meetingId; + public final String voiceConfId; + + public GetUsersFromVoiceConfRequestMessage(String meetingId, String voiceConfId) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_VOICE_USERS_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GetUsersFromVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_VOICE_USERS_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + return new GetUsersFromVoiceConfRequestMessage(id, voiceConfId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersReplyMessage.java new file mode 100755 index 0000000000..4cbb1bc99d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersReplyMessage.java @@ -0,0 +1,65 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetUsersReplyMessage implements ISubscribedMessage { + public static final String GET_USERS_REPLY = "get_users_reply"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final ArrayList<Map<String, Object>> users; + + public GetUsersReplyMessage(String meetingID, String requesterId, ArrayList<Map<String, Object>> users) { + this.meetingId = meetingID; + this.requesterId = requesterId; + this.users = users; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_USERS_REPLY, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static GetUsersReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_USERS_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID) + && payload.has(Constants.USERS)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + JsonArray users = (JsonArray) payload.get(Constants.USERS); + + Util util = new Util(); + ArrayList<Map<String, Object>> usersList = util.extractUsers(users); + + if (usersList != null) { + return new GetUsersReplyMessage(meetingID, requesterId, usersList); + } + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersRequestMessage.java new file mode 100755 index 0000000000..4c377f7d99 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetUsersRequestMessage.java @@ -0,0 +1,53 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetUsersRequestMessage implements IPublishedMessage { + public static final String GET_USERS_REQUEST = "get_users_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + + + public GetUsersRequestMessage(String meetingId, String requesterId) { + this.meetingId = meetingId; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_USERS_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static GetUsersRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_USERS_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + return new GetUsersRequestMessage(meetingId, requesterId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetWhiteboardShapesReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetWhiteboardShapesReplyMessage.java new file mode 100755 index 0000000000..f7533630df --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GetWhiteboardShapesReplyMessage.java @@ -0,0 +1,71 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GetWhiteboardShapesReplyMessage implements ISubscribedMessage { + public static final String GET_WHITEBOARD_SHAPES_REPLY = "get_whiteboard_shapes_reply"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final String whiteboardId; + public final ArrayList<Map<String, Object>> shapes; + + + public GetWhiteboardShapesReplyMessage(String meetingId, String requesterId, + String whiteboardId, ArrayList<Map<String, Object>> shapes) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + this.shapes = shapes; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.SHAPES, shapes); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GET_WHITEBOARD_SHAPES_REPLY, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static GetWhiteboardShapesReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GET_WHITEBOARD_SHAPES_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.SHAPES) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + + JsonArray shapes = (JsonArray) payload.get(Constants.SHAPES); + + Util util = new Util(); + + ArrayList<Map<String, Object>> shapesList = util.extractShapes(shapes); + return new GetWhiteboardShapesReplyMessage(meetingId, requesterId, + whiteboardId, shapesList); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GoToSlideMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GoToSlideMessage.java new file mode 100755 index 0000000000..4717d91b3f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/GoToSlideMessage.java @@ -0,0 +1,53 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class GoToSlideMessage implements IPublishedMessage { + public static final String GO_TO_SLIDE = "go_to_slide"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String page; + + public GoToSlideMessage(String meetingId, String page){ + this.meetingId = meetingId; + this.page = page; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.PAGE, page); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(GO_TO_SLIDE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static GoToSlideMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (GO_TO_SLIDE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.PAGE)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String page = payload.get(Constants.PAGE).getAsString(); + + return new GoToSlideMessage(meetingId, page); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IPublishedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IPublishedMessage.java new file mode 100755 index 0000000000..649f395876 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IPublishedMessage.java @@ -0,0 +1,5 @@ +package org.bigbluebutton.common.messages; + +public interface IPublishedMessage { + +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ISubscribedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ISubscribedMessage.java new file mode 100755 index 0000000000..2a40912aee --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ISubscribedMessage.java @@ -0,0 +1,5 @@ +package org.bigbluebutton.common.messages; + +public interface ISubscribedMessage { + +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitAudioSettingsMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitAudioSettingsMessage.java new file mode 100755 index 0000000000..c298089227 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitAudioSettingsMessage.java @@ -0,0 +1,57 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class InitAudioSettingsMessage implements ISubscribedMessage { + public static final String INIT_AUDIO_SETTING = "init_audio_settings_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean muted; + + public InitAudioSettingsMessage(String meetingID, String userId, Boolean muted) { + this.meetingId = meetingID; + this.userId = userId; + this.muted = muted; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(INIT_AUDIO_SETTING, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static InitAudioSettingsMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (INIT_AUDIO_SETTING.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.MUTED)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + String userId = payload.get(Constants.USER_ID).getAsString(); + Boolean muted = payload.get(Constants.MUTED).getAsBoolean(); + + return new InitAudioSettingsMessage(meetingID, userId, muted); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitPermissionsSettingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitPermissionsSettingMessage.java new file mode 100755 index 0000000000..cc82195456 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/InitPermissionsSettingMessage.java @@ -0,0 +1,60 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class InitPermissionsSettingMessage implements ISubscribedMessage { + public static final String INIT_PERMISSIONS_SETTING = "init_permission_settings_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Boolean> permissions; + + public InitPermissionsSettingMessage(String meetingID, Map<String, Boolean> permissions) { + this.meetingId = meetingID; + this.permissions = permissions; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(INIT_PERMISSIONS_SETTING, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static InitPermissionsSettingMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (INIT_PERMISSIONS_SETTING.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USERS) + && payload.has(Constants.PERMISSIONS)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + + JsonObject permissions = (JsonObject) payload.get(Constants.PERMISSIONS); + + Util util = new Util(); + Map<String, Boolean> permissionsMap = util.extractPermission(permissions); + + if (permissionsMap != null) { + return new InitPermissionsSettingMessage(meetingID, permissionsMap); + } + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedReplyMessage.java new file mode 100755 index 0000000000..51188c6dc5 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedReplyMessage.java @@ -0,0 +1,63 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class IsMeetingMutedReplyMessage implements ISubscribedMessage { + public static final String IS_MEETING_MUTED_REPLY = "is_meeting_muted_reply_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String MUTED = "muted"; + + public final String meetingId; + public final String requesterId; + public final Boolean muted; + + public IsMeetingMutedReplyMessage(String meetingId, String requesterId, Boolean muted) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.muted = muted; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(MUTED, muted); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(IS_MEETING_MUTED_REPLY, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static IsMeetingMutedReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (IS_MEETING_MUTED_REPLY.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(MUTED)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + Boolean muted = payload.get(MUTED).getAsBoolean(); + return new IsMeetingMutedReplyMessage(id, requesterId, muted); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedRequestMessage.java new file mode 100755 index 0000000000..dcb391b804 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsMeetingMutedRequestMessage.java @@ -0,0 +1,57 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class IsMeetingMutedRequestMessage implements ISubscribedMessage { + public static final String IS_MEETING_MUTED_REQUEST = "is_meeting_muted_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + + public final String meetingId; + public final String requesterId; + + public IsMeetingMutedRequestMessage(String meetingId, String requesterId) { + this.meetingId = meetingId; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(IS_MEETING_MUTED_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static IsMeetingMutedRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (IS_MEETING_MUTED_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + return new IsMeetingMutedRequestMessage(id, requesterId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledReplyMessage.java new file mode 100755 index 0000000000..c7a273b86c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledReplyMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class IsWhiteboardEnabledReplyMessage implements ISubscribedMessage { + + public static final String IS_WHITEBOARD_ENABLED_REPLY = "whiteboard_enabled_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final boolean enabled; + + + public IsWhiteboardEnabledReplyMessage(String meetingId, String requesterId, boolean enabled) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.enabled = enabled; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.ENABLED, enabled); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(IS_WHITEBOARD_ENABLED_REPLY, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static IsWhiteboardEnabledReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (IS_WHITEBOARD_ENABLED_REPLY.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID) + && payload.has(Constants.ENABLED)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + boolean enabled = payload.get(Constants.ENABLED).getAsBoolean(); + + return new IsWhiteboardEnabledReplyMessage(meetingId, requesterId, enabled); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledRequestMessage.java new file mode 100755 index 0000000000..666172d67a --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/IsWhiteboardEnabledRequestMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class IsWhiteboardEnabledRequestMessage implements ISubscribedMessage { + public static final String IS_WHITEBOARD_ENABLED_REQUEST = "is_whiteboard_enabled"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final String replyTo; + + + public IsWhiteboardEnabledRequestMessage(String meetingId, + String requesterId, String replyTo) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.replyTo = replyTo; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.REPLY_TO, replyTo); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(IS_WHITEBOARD_ENABLED_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static IsWhiteboardEnabledRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (IS_WHITEBOARD_ENABLED_REQUEST.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REPLY_TO) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + + return new IsWhiteboardEnabledRequestMessage(meetingId, requesterId, replyTo); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/KeepAliveMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/KeepAliveMessage.java new file mode 100755 index 0000000000..059211e811 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/KeepAliveMessage.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.common.messages; + +public class KeepAliveMessage implements IPublishedMessage { + public static final String KEEP_ALIVE_REQUEST = "keep_alive_request"; + public static final String VERSION = "0.0.1"; + + public final String keepAliveId; + + public KeepAliveMessage(String keepAliveId) { + this.keepAliveId = keepAliveId; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutMessage.java new file mode 100755 index 0000000000..1ceb05bf93 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutMessage.java @@ -0,0 +1,74 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class LockLayoutMessage implements ISubscribedMessage { + public static final String LOCK_LAYOUT = "lock_layout_message"; + public static final String VERSION = "0.0.1"; + + public static final String SET_BY_USERID = "set_by_userid"; + public static final String LOCKED = "locked"; + public static final String USERS = "users"; + + public final String meetingId; + public final String setByUserid; + public final Boolean locked; + public final ArrayList<String> users; + + public LockLayoutMessage(String meetingId, String setByUserid, Boolean locked, ArrayList<String> users) { + this.meetingId = meetingId; + this.setByUserid = setByUserid; + this.locked = locked; + this.users = users; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(SET_BY_USERID, setByUserid); + payload.put(LOCKED, locked); + payload.put(USERS, users); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(LOCK_LAYOUT, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static LockLayoutMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (LOCK_LAYOUT.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(LOCKED) + && payload.has(SET_BY_USERID) + && payload.has(USERS)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String setByUserid = payload.get(SET_BY_USERID).getAsString(); + Boolean locked = payload.get(LOCKED).getAsBoolean(); + JsonArray usersArr = (JsonArray) payload.get(USERS); + + Util util = new Util(); + + ArrayList<String> users = util.extractUserids(usersArr); + return new LockLayoutMessage(id, setByUserid, locked, users); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutRequestMessage.java new file mode 100755 index 0000000000..ab2dff2fb2 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockLayoutRequestMessage.java @@ -0,0 +1,75 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class LockLayoutRequestMessage implements ISubscribedMessage { + public static final String LOCK_LAYOUT_REQUEST = "lock_layout_request_message"; + public static final String VERSION = "0.0.1"; + + public final static String LAYOUT = "layout"; + public final static String LOCK = "lock"; + public final static String VIEWERS_ONLY = "viewers_only"; + + public final String meetingId; + public final String userId; + public final Boolean lock; + public final Boolean viewersOnly; + + + public final String layout; + + public LockLayoutRequestMessage(String meetingId, String userId, Boolean lock, Boolean viewersOnly, String layout) { + this.meetingId = meetingId; + this.userId = userId; + this.lock = lock; + this.viewersOnly = viewersOnly; + this.layout = layout; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(LOCK, lock); + payload.put(VIEWERS_ONLY, viewersOnly); + payload.put(LAYOUT, layout); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(LOCK_LAYOUT_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static LockLayoutRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (LOCK_LAYOUT_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(LOCK) + && payload.has(VIEWERS_ONLY) + && payload.has(LAYOUT)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean lock = payload.get(LOCK).getAsBoolean(); + Boolean viewersOnly = payload.get(VIEWERS_ONLY).getAsBoolean(); + String layout = payload.get(LAYOUT).getAsString(); + return new LockLayoutRequestMessage(id, userid, lock, viewersOnly, layout); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockMuteUserRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockMuteUserRequestMessage.java new file mode 100755 index 0000000000..7276ead27f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockMuteUserRequestMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class LockMuteUserRequestMessage implements ISubscribedMessage { + public static final String LOCK_MUTE_USER_REQUEST = "lock_mute_user_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String USER_ID = "user_id"; + public static final String LOCK = "lock"; + + public final String meetingId; + public final String requesterId; + public final String userId; + public final Boolean lock; + + public LockMuteUserRequestMessage(String meetingId, String requesterId, String userId, Boolean lock) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.userId = userId; + this.lock = lock; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(USER_ID, userId); + payload.put(LOCK, lock); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(LOCK_MUTE_USER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static LockMuteUserRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (LOCK_MUTE_USER_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(USER_ID) + && payload.has(LOCK)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + String userId = payload.get(USER_ID).getAsString(); + Boolean lock = payload.get(LOCK).getAsBoolean(); + return new LockMuteUserRequestMessage(id, requesterId, userId, lock); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockUserMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockUserMessage.java new file mode 100755 index 0000000000..02276a2060 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/LockUserMessage.java @@ -0,0 +1,63 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class LockUserMessage implements IPublishedMessage { + public static final String LOCK_USER = "lock_user"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final boolean lock; + public final String internalUserId; + + + public LockUserMessage(String meetingId, String requesterId, boolean lock, String internalUserId) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.lock = lock; + this.internalUserId = internalUserId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.LOCK, lock); + payload.put(Constants.INTERNAL_USER_ID, internalUserId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(LOCK_USER, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static LockUserMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (LOCK_USER.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.REQUESTER_ID) + && payload.has(Constants.LOCK) + && payload.has(Constants.INTERNAL_USER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + boolean lock = payload.get(Constants.LOCK).getAsBoolean(); + String internalUserId = payload.get(Constants.INTERNAL_USER_ID).getAsString(); + + return new LockUserMessage(meetingId, requesterId, lock, internalUserId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingEndedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingEndedMessage.java new file mode 100755 index 0000000000..3fd666211a --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingEndedMessage.java @@ -0,0 +1,48 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class MeetingEndedMessage implements ISubscribedMessage { + public static final String MEETING_ENDED = "meeting_ended_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + + public MeetingEndedMessage(String meetingID) { + this.meetingId = meetingID; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MEETING_ENDED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static MeetingEndedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MEETING_ENDED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + + return new MeetingEndedMessage(meetingId); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingHasEndedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingHasEndedMessage.java new file mode 100755 index 0000000000..71f2e6418b --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingHasEndedMessage.java @@ -0,0 +1,48 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class MeetingHasEndedMessage implements ISubscribedMessage { + public static final String MEETING_HAS_ENDED = "meeting_has_ended_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + + public MeetingHasEndedMessage(String meetingID) { + this.meetingId = meetingID; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MEETING_HAS_ENDED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static MeetingHasEndedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MEETING_HAS_ENDED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + + return new MeetingHasEndedMessage(meetingId); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingMutedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingMutedMessage.java new file mode 100755 index 0000000000..7bee2743b7 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingMutedMessage.java @@ -0,0 +1,53 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class MeetingMutedMessage implements ISubscribedMessage { + public static final String MEETING_MUTED = "meeting_muted_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final Boolean muted; + + public MeetingMutedMessage(String meetingID, Boolean muted) { + this.meetingId = meetingID; + this.muted = muted; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MEETING_MUTED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static MeetingMutedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MEETING_MUTED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MEETING_MUTED)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + Boolean muted = payload.get(Constants.MEETING_MUTED).getAsBoolean(); + + return new MeetingMutedMessage(meetingID, muted); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingStateMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingStateMessage.java new file mode 100755 index 0000000000..80e7a273e6 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MeetingStateMessage.java @@ -0,0 +1,66 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class MeetingStateMessage implements ISubscribedMessage { + public static final String MEETING_STATE = "meeting_state_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Map<String, Boolean> permissions; + public final Boolean muted; + + public MeetingStateMessage(String meetingID, String userId, Map<String, Boolean> permissions, Boolean muted) { + this.meetingId = meetingID; + this.userId = userId; + this.permissions = permissions; + this.muted = muted; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MEETING_STATE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static MeetingStateMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MEETING_STATE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.PERMISSIONS) + && payload.has(Constants.MEETING_MUTED)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + String userId = payload.get(Constants.USER_ID).getAsString(); + Boolean muted = payload.get(Constants.MEETING_MUTED).getAsBoolean(); + JsonObject premissions = (JsonObject) payload.get(Constants.PERMISSIONS); + + Util util = new Util(); + Map<String, Boolean> premissionsMap = util.extractPermission(premissions); + + if (premissionsMap != null) { + return new MeetingStateMessage(meetingID, userId, premissionsMap, muted); + } + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageBuilder.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageBuilder.java new file mode 100755 index 0000000000..b9cf94ac41 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageBuilder.java @@ -0,0 +1,36 @@ +package org.bigbluebutton.common.messages; + +import java.util.concurrent.TimeUnit; + +import com.google.gson.Gson; + +public class MessageBuilder { + public final static String VERSION = "version"; + + public static long generateTimestamp() { + return TimeUnit.NANOSECONDS.toMillis(System.nanoTime()); + } + + public static java.util.HashMap<String, Object> buildHeader(String name, String version, String replyTo) { + java.util.HashMap<String, Object> header = new java.util.HashMap<String, Object>(); + header.put(Constants.NAME, name); + header.put(VERSION, version); + header.put(Constants.TIMESTAMP, generateTimestamp()); + if (replyTo != null && replyTo != "") + header.put(Constants.REPLY_TO, replyTo); + + return header; + } + + + public static String buildJson(java.util.HashMap<String, Object> header, + java.util.HashMap<String, Object> payload) { + + java.util.HashMap<String, java.util.HashMap<String, Object>> message = new java.util.HashMap<String, java.util.HashMap<String, Object>>(); + message.put(Constants.HEADER, header); + message.put(Constants.PAYLOAD, payload); + + Gson gson = new Gson(); + return gson.toJson(message); + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageFromJsonConverter.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageFromJsonConverter.java new file mode 100755 index 0000000000..5b512e925b --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessageFromJsonConverter.java @@ -0,0 +1,88 @@ +package org.bigbluebutton.common.messages; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class MessageFromJsonConverter { + + public static IPublishedMessage convert(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + switch (messageName) { + case CreateMeetingMessage.CREATE_MEETING_REQUEST_EVENT: + return processCreateMeeting(payload); + case DestroyMeetingMessage.DESTROY_MEETING_REQUEST_EVENT: + return processDestroyMeeting(payload); + case EndMeetingMessage.END_MEETING_REQUEST_EVENT: + return processEndMeetingMessage(payload); + case KeepAliveMessage.KEEP_ALIVE_REQUEST: + return processKeepAlive(payload); + case RegisterUserMessage.REGISTER_USER: + return RegisterUserMessage.fromJson(message); + case ValidateAuthTokenMessage.VALIDATE_AUTH_TOKEN: + return processValidateAuthTokenMessage(header, payload); + // return ValidateAuthTokenMessage.fromJson(message); + case UserConnectedToGlobalAudio.USER_CONNECTED_TO_GLOBAL_AUDIO: + return UserConnectedToGlobalAudio.fromJson(message); + case UserDisconnectedFromGlobalAudio.USER_DISCONNECTED_FROM_GLOBAL_AUDIO: + return UserDisconnectedFromGlobalAudio.fromJson(message); + case GetAllMeetingsRequest.GET_ALL_MEETINGS_REQUEST_EVENT: + return new GetAllMeetingsRequest("the_string_is_not_used_anywhere"); + } + } + } + return null; + } + + private static IPublishedMessage processValidateAuthTokenMessage(JsonObject header, JsonObject payload) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String authToken = payload.get(Constants.AUTH_TOKEN).getAsString(); + String replyTo = header.get(Constants.REPLY_TO).getAsString(); + String sessionId = "tobeimplemented"; + return new ValidateAuthTokenMessage(id, userid, authToken, replyTo, + sessionId); + } + + private static IPublishedMessage processCreateMeeting(JsonObject payload) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String externalId = payload.get(Constants.EXTERNAL_MEETING_ID).getAsString(); + String name = payload.get(Constants.NAME).getAsString(); + Boolean record = payload.get(Constants.RECORDED).getAsBoolean(); + String voiceBridge = payload.get(Constants.VOICE_CONF).getAsString(); + Long duration = payload.get(Constants.DURATION).getAsLong(); + Boolean autoStartRecording = payload.get(Constants.AUTO_START_RECORDING).getAsBoolean(); + Boolean allowStartStopRecording = payload.get(Constants.ALLOW_START_STOP_RECORDING).getAsBoolean(); + String moderatorPassword = payload.get(Constants.MODERATOR_PASS).getAsString(); + String viewerPassword = payload.get(Constants.VIEWER_PASS).getAsString(); + Long createTime = payload.get(Constants.CREATE_TIME).getAsLong(); + String createDate = payload.get(Constants.CREATE_DATE).getAsString(); + + return new CreateMeetingMessage(id, externalId, name, record, voiceBridge, + duration, autoStartRecording, allowStartStopRecording, + moderatorPassword, viewerPassword, createTime, createDate); + } + + private static IPublishedMessage processDestroyMeeting(JsonObject payload) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + return new DestroyMeetingMessage(id); + } + + private static IPublishedMessage processEndMeetingMessage(JsonObject payload) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + return new EndMeetingMessage(id); + } + + private static IPublishedMessage processKeepAlive(JsonObject payload) { + String id = payload.get(Constants.KEEP_ALIVE_ID).getAsString(); + return new KeepAliveMessage(id); + } + +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessagingConstants.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessagingConstants.java new file mode 100755 index 0000000000..96f8d341c3 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MessagingConstants.java @@ -0,0 +1,66 @@ +/** +* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ +* +* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below). +* +* This program is free software; you can redistribute it and/or modify it under the +* terms of the GNU Lesser General Public License as published by the Free Software +* Foundation; either version 3.0 of the License, or (at your option) any later +* version. +* +* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY +* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License along +* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. +* +*/ +package org.bigbluebutton.common.messages; + +public class MessagingConstants { + + public static final String FROM_BBB_APPS_CHANNEL = "bigbluebutton:from-bbb-apps"; + public static final String FROM_BBB_APPS_PATTERN = FROM_BBB_APPS_CHANNEL + ":*"; + public static final String FROM_SYSTEM_CHANNEL = FROM_BBB_APPS_CHANNEL + ":system"; + public static final String FROM_MEETING_CHANNEL = FROM_BBB_APPS_CHANNEL + ":meeting"; + public static final String FROM_PRESENTATION_CHANNEL = FROM_BBB_APPS_CHANNEL + ":presentation"; + public static final String FROM_POLLING_CHANNEL = FROM_BBB_APPS_CHANNEL + ":polling"; + public static final String FROM_USERS_CHANNEL = FROM_BBB_APPS_CHANNEL + ":users"; + public static final String FROM_CHAT_CHANNEL = FROM_BBB_APPS_CHANNEL + ":chat"; + public static final String FROM_WHITEBOARD_CHANNEL = FROM_BBB_APPS_CHANNEL + ":whiteboard"; + + public static final String TO_BBB_APPS_CHANNEL = "bigbluebutton:to-bbb-apps"; + public static final String TO_BBB_APPS_PATTERN = TO_BBB_APPS_CHANNEL + ":*"; + public static final String TO_MEETING_CHANNEL = TO_BBB_APPS_CHANNEL + ":meeting"; + public static final String TO_SYSTEM_CHANNEL = TO_BBB_APPS_CHANNEL + ":system"; + public static final String TO_PRESENTATION_CHANNEL = TO_BBB_APPS_CHANNEL + ":presentation"; + public static final String TO_POLLING_CHANNEL = TO_BBB_APPS_CHANNEL + ":polling"; + public static final String TO_USERS_CHANNEL = TO_BBB_APPS_CHANNEL + ":users"; + public static final String TO_CHAT_CHANNEL = TO_BBB_APPS_CHANNEL + ":chat"; + public static final String TO_VOICE_CHANNEL = TO_BBB_APPS_CHANNEL + ":voice"; + public static final String TO_WHITEBOARD_CHANNEL = TO_BBB_APPS_CHANNEL + ":whiteboard"; + + public static final String TO_VOICE_CONF_CHANNEL = "bigbluebutton:to-voice-conf"; + public static final String TO_VOICE_CONF_PATTERN = TO_VOICE_CONF_CHANNEL + ":*"; + public static final String TO_VOICE_CONF_SYSTEM_CHAN = TO_VOICE_CONF_CHANNEL + ":system"; + public static final String FROM_VOICE_CONF_CHANNEL = "bigbluebutton:from-voice-conf"; + public static final String FROM_VOICE_CONF_PATTERN = FROM_VOICE_CONF_CHANNEL + ":*"; + public static final String FROM_VOICE_CONF_SYSTEM_CHAN = FROM_VOICE_CONF_CHANNEL + ":system"; + + public static final String DESTROY_MEETING_REQUEST_EVENT = "DestroyMeetingRequestEvent"; + public static final String CREATE_MEETING_REQUEST_EVENT = "CreateMeetingRequestEvent"; + public static final String END_MEETING_REQUEST_EVENT = "EndMeetingRequestEvent"; + public static final String MEETING_STARTED_EVENT = "meeting_created_message"; + public static final String MEETING_ENDED_EVENT = "meeting_ended_event"; + public static final String MEETING_DESTROYED_EVENT = "meeting_destroyed_event"; + public static final String USER_JOINED_EVENT = "UserJoinedEvent"; + public static final String USER_LEFT_EVENT = "UserLeftEvent"; + public static final String USER_LEFT_VOICE_REQUEST = "user_left_voice_request"; + public static final String USER_STATUS_CHANGE_EVENT = "UserStatusChangeEvent"; + public static final String SEND_POLLS_EVENT = "SendPollsEvent"; + public static final String RECORD_STATUS_EVENT = "RecordStatusEvent"; + public static final String SEND_PUBLIC_CHAT_MESSAGE_REQUEST = "send_public_chat_message_request"; + public static final String SEND_PRIVATE_CHAT_MESSAGE_REQUEST = "send_private_chat_message_request"; + public static final String MUTE_USER_REQUEST = "mute_user_request"; +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllExceptPresenterRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllExceptPresenterRequestMessage.java new file mode 100755 index 0000000000..7fed738b33 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllExceptPresenterRequestMessage.java @@ -0,0 +1,63 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class MuteAllExceptPresenterRequestMessage implements ISubscribedMessage { + public static final String MUTE_ALL_EXCEPT_PRESENTER_REQUEST = "mute_all_except_presenter_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String MUTE = "mute"; + + public final String meetingId; + public final String requesterId; + public final Boolean mute; + + public MuteAllExceptPresenterRequestMessage(String meetingId, String requesterId, Boolean mute) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.mute = mute; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(MUTE, mute); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MUTE_ALL_EXCEPT_PRESENTER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static MuteAllExceptPresenterRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MUTE_ALL_EXCEPT_PRESENTER_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(MUTE)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + Boolean mute = payload.get(MUTE).getAsBoolean(); + return new MuteAllExceptPresenterRequestMessage(id, requesterId, mute); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllRequestMessage.java new file mode 100755 index 0000000000..4e0c4b9b0c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteAllRequestMessage.java @@ -0,0 +1,63 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class MuteAllRequestMessage implements ISubscribedMessage { + public static final String MUTE_ALL_REQUEST = "mute_all_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String MUTE = "mute"; + + public final String meetingId; + public final String requesterId; + public final Boolean mute; + + public MuteAllRequestMessage(String meetingId, String requesterId, Boolean mute) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.mute = mute; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(MUTE, mute); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MUTE_ALL_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static MuteAllRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MUTE_ALL_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(MUTE)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + Boolean mute = payload.get(MUTE).getAsBoolean(); + return new MuteAllRequestMessage(id, requesterId, mute); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserInVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserInVoiceConfRequestMessage.java new file mode 100755 index 0000000000..4f45cef8e1 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserInVoiceConfRequestMessage.java @@ -0,0 +1,68 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class MuteUserInVoiceConfRequestMessage { + public static final String MUTE_VOICE_USER_REQUEST = "mute_user_in_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + public static final String MUTE = "mute"; + + public final String meetingId; + public final String voiceConfId; + public final String voiceUserId; + public final Boolean mute; + + public MuteUserInVoiceConfRequestMessage(String meetingId, String voiceConfId, String voiceUserId, Boolean mute) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + this.mute = mute; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + payload.put(MUTE, mute); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MUTE_VOICE_USER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static MuteUserInVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MUTE_VOICE_USER_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID) + && payload.has(MUTE)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + Boolean mute = payload.get(MUTE).getAsBoolean(); + return new MuteUserInVoiceConfRequestMessage(id, voiceConfId, voiceUserId, mute); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserRequestMessage.java new file mode 100755 index 0000000000..776b3cc0c8 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteUserRequestMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class MuteUserRequestMessage implements ISubscribedMessage { + public static final String MUTE_USER_REQUEST = "mute_user_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String USER_ID = "user_id"; + public static final String MUTE = "mute"; + + public final String meetingId; + public final String requesterId; + public final String userId; + public final Boolean mute; + + public MuteUserRequestMessage(String meetingId, String requesterId, String userId, Boolean mute) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.userId = userId; + this.mute = mute; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(USER_ID, userId); + payload.put(MUTE, mute); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MUTE_USER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static MuteUserRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MUTE_USER_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(USER_ID) + && payload.has(MUTE)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + String userId = payload.get(USER_ID).getAsString(); + Boolean mute = payload.get(MUTE).getAsBoolean(); + return new MuteUserRequestMessage(id, requesterId, userId, mute); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteVoiceUserRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteVoiceUserRequestMessage.java new file mode 100755 index 0000000000..16a9574952 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/MuteVoiceUserRequestMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class MuteVoiceUserRequestMessage implements ISubscribedMessage { + public static final String MUTE_USER_REQUEST = "mute_user_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String REQUESTER_ID = "requester_id"; + public static final String USER_ID = "user_id"; + public static final String MUTE = "mute"; + + public final String meetingId; + public final String requesterId; + public final String userId; + public final Boolean mute; + + public MuteVoiceUserRequestMessage(String meetingId, String requesterId, String userId, Boolean mute) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.userId = userId; + this.mute = mute; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(REQUESTER_ID, requesterId); + payload.put(USER_ID, userId); + payload.put(MUTE, mute); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(MUTE_USER_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static MuteVoiceUserRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (MUTE_USER_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(REQUESTER_ID) + && payload.has(USER_ID) + && payload.has(MUTE)) { + String id = payload.get(MEETING_ID).getAsString(); + String requesterId = payload.get(REQUESTER_ID).getAsString(); + String userId = payload.get(USER_ID).getAsString(); + Boolean mute = payload.get(MUTE).getAsBoolean(); + return new MuteVoiceUserRequestMessage(id, requesterId, userId, mute); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/NewPermissionsSettingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/NewPermissionsSettingMessage.java new file mode 100755 index 0000000000..d7257a6c22 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/NewPermissionsSettingMessage.java @@ -0,0 +1,68 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class NewPermissionsSettingMessage implements ISubscribedMessage { + public static final String NEW_PERMISSIONS_SETTING = "new_permission_settings"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final ArrayList<Map<String, Object>> users; + public final Map<String, Boolean> permissions; + + public NewPermissionsSettingMessage(String meetingID, Map<String, Boolean> permissions, ArrayList<Map<String, Object>> users) { + this.meetingId = meetingID; + this.users = users; + this.permissions = permissions; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(NEW_PERMISSIONS_SETTING, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static NewPermissionsSettingMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (NEW_PERMISSIONS_SETTING.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USERS) + && payload.has(Constants.PERMISSIONS)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + + JsonObject permissions = (JsonObject) payload.get(Constants.PERMISSIONS); + + Util util = new Util(); + Map<String, Boolean> permissionsMap = util.extractPermission(permissions); + + JsonArray users = (JsonArray) payload.get(Constants.USERS); + + ArrayList<Map<String, Object>> usersList = util.extractUsers(users); + + if (usersList != null && permissionsMap != null) { + return new NewPermissionsSettingMessage(meetingID, permissionsMap, usersList); + } + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresentationRemovedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresentationRemovedMessage.java new file mode 100755 index 0000000000..d2e2821cfa --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresentationRemovedMessage.java @@ -0,0 +1,56 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class PresentationRemovedMessage implements ISubscribedMessage { + public static final String PRESENTATION_REMOVED = "presentation_removed_message"; + public final String VERSION = "0.0.1"; + + public static final String PRESENTATION_ID = "presentation_id"; + public static final String MEETING_ID = "meeting_id"; + + public final String meetingId; + public final String presentationId; + + public PresentationRemovedMessage(String meetingId, String presentationId) { + this.meetingId = meetingId; + this.presentationId = presentationId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(PRESENTATION_ID, presentationId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(PRESENTATION_REMOVED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static PresentationRemovedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (PRESENTATION_REMOVED.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(PRESENTATION_ID)) { + String meetingId = payload.get(MEETING_ID).getAsString(); + String presentationId = payload.get(MEETING_ID).getAsString(); + return new PresentationRemovedMessage(meetingId, presentationId); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresenterAssignedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresenterAssignedMessage.java new file mode 100755 index 0000000000..38a8f2dc72 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PresenterAssignedMessage.java @@ -0,0 +1,64 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class PresenterAssignedMessage implements ISubscribedMessage { + public static final String PRESENTER_ASSIGNED = "presenter_assigned_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String newPresenterId; + public final String newPresenterName; + public final String assignedBy; + + public PresenterAssignedMessage(String meetingId, String newPresenterId, String newPresenterName, + String assignedBy) { + this.meetingId = meetingId; + this.newPresenterId = newPresenterId; + this.newPresenterName = newPresenterName; + this.assignedBy = assignedBy; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.NEW_PRESENTER_ID, newPresenterId); + payload.put(Constants.NEW_PRESENTER_NAME, newPresenterName); + payload.put(Constants.ASSIGNED_BY, assignedBy); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(PRESENTER_ASSIGNED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static PresenterAssignedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (PRESENTER_ASSIGNED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.NEW_PRESENTER_ID) + && payload.has(Constants.NEW_PRESENTER_NAME) + && payload.has(Constants.ASSIGNED_BY)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String presenterId = payload.get(Constants.NEW_PRESENTER_ID).getAsString(); + String presenterName = payload.get(Constants.NEW_PRESENTER_NAME).getAsString(); + String assignedBy = payload.get(Constants.ASSIGNED_BY).getAsString(); + return new PresenterAssignedMessage(id, presenterId, presenterName, assignedBy); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordVoiceConfRequestMessage.java new file mode 100755 index 0000000000..4158afea22 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordVoiceConfRequestMessage.java @@ -0,0 +1,62 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class RecordVoiceConfRequestMessage { + public static final String RECORD_VOICE_CONF_REQUEST = "record_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String RECORD = "record"; + + public final String meetingId; + public final String voiceConfId; + public final Boolean record; + + public RecordVoiceConfRequestMessage(String meetingId, String voiceConfId, Boolean record) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + this.record = record; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(RECORD, record); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(RECORD_VOICE_CONF_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static RecordVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (RECORD_VOICE_CONF_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID) + && payload.has(RECORD)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + Boolean record = payload.get(RECORD).getAsBoolean(); + return new RecordVoiceConfRequestMessage(id, voiceConfId, record); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordingStatusChangedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordingStatusChangedMessage.java new file mode 100755 index 0000000000..a6f7b4a443 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RecordingStatusChangedMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class RecordingStatusChangedMessage implements ISubscribedMessage { + public static final String RECORDING_STATUS_CHANGED = "recording_status_changed_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean recording; + + public RecordingStatusChangedMessage(String meetingId, String userId, Boolean recording) { + this.meetingId = meetingId; + this.userId = userId; + this.recording = recording; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.RECORDING, recording); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(RECORDING_STATUS_CHANGED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static RecordingStatusChangedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (RECORDING_STATUS_CHANGED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.RECORDING)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean recording = payload.get(Constants.RECORDING).getAsBoolean(); + return new RecordingStatusChangedMessage(id, userid, recording); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java new file mode 100755 index 0000000000..78738fab6c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java @@ -0,0 +1,73 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class RegisterUserMessage implements IPublishedMessage { + public static final String REGISTER_USER = "register_user_request"; + public final String VERSION = "0.0.1"; + + public final String meetingID; + public final String internalUserId; + public final String fullname; + public final String role; + public final String externUserID; + public final String authToken; + + public RegisterUserMessage(String meetingID, String internalUserId, String fullname, String role, String externUserID, String authToken) { + this.meetingID = meetingID; + this.internalUserId = internalUserId; + this.fullname = fullname; + this.role = role; + this.externUserID = externUserID; + this.authToken = authToken; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + + payload.put(Constants.MEETING_ID, meetingID); + payload.put(Constants.INTERNAL_USER_ID, internalUserId); + payload.put(Constants.NAME, fullname); + payload.put(Constants.ROLE, role); + payload.put(Constants.EXT_USER_ID, externUserID); + payload.put(Constants.AUTH_TOKEN, authToken); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(REGISTER_USER, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static RegisterUserMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (REGISTER_USER.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.NAME) + && payload.has(Constants.ROLE) + && payload.has(Constants.EXT_USER_ID) + && payload.has(Constants.AUTH_TOKEN)) { + + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + String fullname = payload.get(Constants.NAME).getAsString(); + String role = payload.get(Constants.ROLE).getAsString(); + String externUserID = payload.get(Constants.EXT_USER_ID).getAsString(); + String authToken = payload.get(Constants.AUTH_TOKEN).getAsString(); + + //use externalUserId twice - once for external, once for internal + return new RegisterUserMessage(meetingID, externUserID, fullname, role, externUserID, authToken); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RemovePresentationMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RemovePresentationMessage.java new file mode 100755 index 0000000000..4fc04a91c1 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RemovePresentationMessage.java @@ -0,0 +1,53 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class RemovePresentationMessage implements IPublishedMessage { + public static final String REMOVE_PRESENTATION = "remove_presentation"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String presentationId; + + public RemovePresentationMessage(String meetingId, String presentationId){ + this.meetingId = meetingId; + this.presentationId = presentationId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.PRESENTATION_ID, presentationId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(REMOVE_PRESENTATION, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static RemovePresentationMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (REMOVE_PRESENTATION.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.PRESENTATION_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String presentationId = payload.get(Constants.PRESENTATION_ID).getAsString(); + + return new RemovePresentationMessage(meetingId, presentationId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RequestWhiteboardAnnotationHistoryRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RequestWhiteboardAnnotationHistoryRequestMessage.java new file mode 100755 index 0000000000..df83b2c723 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RequestWhiteboardAnnotationHistoryRequestMessage.java @@ -0,0 +1,64 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class RequestWhiteboardAnnotationHistoryRequestMessage implements ISubscribedMessage { + public static final String REQUEST_WHITEBOARD_ANNOTATION_HISTORY_REQUEST = "request_whiteboard_annotation_history_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String whiteboardId; + public final String requesterId; + public final String replyTo; + + + public RequestWhiteboardAnnotationHistoryRequestMessage(String meetingId, + String requesterId, String whiteboardId, String replyTo) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + this.replyTo = replyTo; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.REPLY_TO, replyTo); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(REQUEST_WHITEBOARD_ANNOTATION_HISTORY_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static RequestWhiteboardAnnotationHistoryRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (REQUEST_WHITEBOARD_ANNOTATION_HISTORY_REQUEST.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.REPLY_TO) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + + return new RequestWhiteboardAnnotationHistoryRequestMessage(meetingId, requesterId, whiteboardId, replyTo); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ResizeAndMoveSlideMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ResizeAndMoveSlideMessage.java new file mode 100755 index 0000000000..c82cdb50cc --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ResizeAndMoveSlideMessage.java @@ -0,0 +1,68 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ResizeAndMoveSlideMessage implements IPublishedMessage { + public static final String RESIZE_AND_MOVE_SLIDE = "resize_and_move_slide"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final double xOffset; + public final double yOffset; + public final double widthRatio; + public final double heightRatio; + + public ResizeAndMoveSlideMessage(String meetingId, double xOffset, double yOffset, + double widthRatio, double heightRatio) { + this.meetingId = meetingId; + this.xOffset = xOffset; + this.yOffset = yOffset; + this.heightRatio = heightRatio; + this.widthRatio = widthRatio; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.X_OFFSET, xOffset); + payload.put(Constants.Y_OFFSET, yOffset); + payload.put(Constants.HEIGHT_RATIO, heightRatio); + payload.put(Constants.WIDTH_RATIO, widthRatio); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(RESIZE_AND_MOVE_SLIDE, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static ResizeAndMoveSlideMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (RESIZE_AND_MOVE_SLIDE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.X_OFFSET) + && payload.has(Constants.Y_OFFSET) + && payload.has(Constants.HEIGHT_RATIO) + && payload.has(Constants.WIDTH_RATIO)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + double xOffset = payload.get(Constants.X_OFFSET).getAsDouble(); + double yOffset = payload.get(Constants.Y_OFFSET).getAsDouble(); + double heightRatio = payload.get(Constants.HEIGHT_RATIO).getAsDouble(); + double widthRatio = payload.get(Constants.WIDTH_RATIO).getAsDouble(); + + return new ResizeAndMoveSlideMessage(meetingId, xOffset, yOffset, widthRatio, heightRatio); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionCompletedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionCompletedMessage.java new file mode 100755 index 0000000000..6f7cdad54c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionCompletedMessage.java @@ -0,0 +1,79 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendConversionCompletedMessage implements IPublishedMessage { + public static final String SEND_CONVERSION_COMPLETED = "send_conversion_completed"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String messageKey; + public final String code; + public final String presId; + public final int numPages; + public final String presName; + public final String presBaseUrl; + + public SendConversionCompletedMessage(String messageKey, String meetingId, String code, + String presId, int numPages, String presName, String presBaseUrl) { + this.meetingId = meetingId; + this.messageKey = messageKey; + this.code = code; + this.presId = presId; + this.numPages = numPages; + this.presName = presName; + this.presBaseUrl = presBaseUrl; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.MESSAGE_KEY, messageKey); + payload.put(Constants.CODE, code); + payload.put(Constants.PRESENTATION_ID, presId); + payload.put(Constants.NUM_PAGES, numPages); + payload.put(Constants.PRESENTATION_NAME, presName); + payload.put(Constants.PRESENTATION_BASE_URL, presBaseUrl); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_CONVERSION_COMPLETED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendConversionCompletedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_CONVERSION_COMPLETED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MESSAGE_KEY) + && payload.has(Constants.CODE) + && payload.has(Constants.PRESENTATION_ID) + && payload.has(Constants.NUM_PAGES) + && payload.has(Constants.PRESENTATION_NAME) + && payload.has(Constants.PRESENTATION_BASE_URL)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String messageKey = payload.get(Constants.MESSAGE_KEY).getAsString(); + String code = payload.get(Constants.CODE).getAsString(); + String presId = payload.get(Constants.PRESENTATION_ID).getAsString(); + int numPages = payload.get(Constants.NUM_PAGES).getAsInt(); + String presName = payload.get(Constants.PRESENTATION_NAME).getAsString(); + String presBaseUrl = payload.get(Constants.PRESENTATION_BASE_URL).getAsString(); + + return new SendConversionCompletedMessage(messageKey, meetingId, code, presId, numPages, presName, presBaseUrl); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionUpdateMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionUpdateMessage.java new file mode 100755 index 0000000000..58b6d987c8 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendConversionUpdateMessage.java @@ -0,0 +1,70 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendConversionUpdateMessage implements IPublishedMessage { + public static final String SEND_CONVERSION_UPDATE = "send_conversion_update"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String messageKey; + public final String code; + public final String presId; + public final String presName; + + + public SendConversionUpdateMessage(String messageKey, String meetingId, + String code, String presId, String presName) { + this.meetingId = meetingId; + this.messageKey = messageKey; + this.code = code; + this.presId = presId; + this.presName = presName; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.MESSAGE_KEY, messageKey); + payload.put(Constants.CODE, code); + payload.put(Constants.PRESENTATION_ID, presId); + payload.put(Constants.PRESENTATION_NAME, presName); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_CONVERSION_UPDATE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendConversionUpdateMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_CONVERSION_UPDATE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MESSAGE_KEY) + && payload.has(Constants.CODE) + && payload.has(Constants.PRESENTATION_NAME) + && payload.has(Constants.PRESENTATION_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String code = payload.get(Constants.CODE).getAsString(); + String messageKey = payload.get(Constants.MESSAGE_KEY).getAsString(); + String presId = payload.get(Constants.PRESENTATION_ID).getAsString(); + String presName = payload.get(Constants.PRESENTATION_NAME).getAsString(); + + return new SendConversionUpdateMessage(messageKey, meetingId, code, presId, presName); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendCursorUpdateMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendCursorUpdateMessage.java new file mode 100755 index 0000000000..c81e8e3ec3 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendCursorUpdateMessage.java @@ -0,0 +1,58 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendCursorUpdateMessage implements IPublishedMessage { + public static final String SEND_CURSOR_UPDATE = "send_cursor_update"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final double xPercent; + public final double yPercent; + + public SendCursorUpdateMessage(String meetingId, double xPercent, double yPercent){ + this.meetingId = meetingId; + this.xPercent = xPercent; + this.yPercent = yPercent; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.X_PERCENT, xPercent); + payload.put(Constants.Y_PERCENT, yPercent); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_CURSOR_UPDATE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendCursorUpdateMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_CURSOR_UPDATE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.X_PERCENT) + && payload.has(Constants.Y_PERCENT)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + double xPercent = payload.get(Constants.X_PERCENT).getAsDouble(); + double yPercent = payload.get(Constants.Y_PERCENT).getAsDouble(); + + return new SendCursorUpdateMessage(meetingId, xPercent, yPercent); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendLockSettingsMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendLockSettingsMessage.java new file mode 100755 index 0000000000..a986d31220 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendLockSettingsMessage.java @@ -0,0 +1,91 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendLockSettingsMessage implements IPublishedMessage { + public static final String SEND_LOCK_SETTINGS = "send_lock_settings"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Map<String, Boolean> newSettings; + + + public SendLockSettingsMessage(String meetingId, String userId, Map<String, Boolean> newSettings) { + this.meetingId = meetingId; + this.userId = userId; + this.newSettings = newSettings; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + + Map<String, Boolean> settingsMap = new HashMap<String, Boolean>(); + + settingsMap.put(Constants.DISABLE_CAMERA, newSettings.get("disableCam")); + settingsMap.put(Constants.DISABLE_MICROPHONE, newSettings.get("disableMic")); + settingsMap.put(Constants.DISABLE_PRIVATE_CHAT, newSettings.get("disablePrivateChat")); + settingsMap.put(Constants.DISABLE_PUBLIC_CHAT, newSettings.get("disablePublicChat")); + settingsMap.put(Constants.LOCKED_LAYOUT, newSettings.get("lockedLayout")); + settingsMap.put(Constants.LOCK_ON_JOIN, newSettings.get("lockOnJoin")); + settingsMap.put(Constants.LOCK_ON_JOIN_CONFIGURABLE, newSettings.get("lockOnJoinConfigurable")); + + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.SETTINGS, settingsMap); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_LOCK_SETTINGS, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static SendLockSettingsMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_LOCK_SETTINGS.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.SETTINGS)) { + + JsonObject settingsObj = (JsonObject) payload.get(Constants.SETTINGS).getAsJsonObject(); + if (settingsObj.has(Constants.DISABLE_CAMERA) + && settingsObj.has(Constants.DISABLE_CAMERA) + && settingsObj.has(Constants.DISABLE_MICROPHONE) + && settingsObj.has(Constants.DISABLE_PRIVATE_CHAT) + && settingsObj.has(Constants.DISABLE_PUBLIC_CHAT) + && settingsObj.has(Constants.LOCKED_LAYOUT) + && settingsObj.has(Constants.LOCK_ON_JOIN) + && settingsObj.has(Constants.LOCK_ON_JOIN_CONFIGURABLE)) { + + Map<String, Boolean> settingsMap = new HashMap<String, Boolean>(); + + settingsMap.put("disableCam", settingsObj.get(Constants.DISABLE_CAMERA).getAsBoolean()); + settingsMap.put("disableMic", settingsObj.get(Constants.DISABLE_MICROPHONE).getAsBoolean()); + settingsMap.put("disablePrivateChat", settingsObj.get(Constants.DISABLE_PRIVATE_CHAT).getAsBoolean()); + settingsMap.put("disablePublicChat", settingsObj.get(Constants.DISABLE_PUBLIC_CHAT).getAsBoolean()); + settingsMap.put("lockedLayout", settingsObj.get(Constants.LOCKED_LAYOUT).getAsBoolean()); + settingsMap.put("lockOnJoin", settingsObj.get(Constants.LOCK_ON_JOIN).getAsBoolean()); + settingsMap.put("lockOnJoinConfigurable", settingsObj.get(Constants.LOCK_ON_JOIN_CONFIGURABLE).getAsBoolean()); + + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String userId = payload.get(Constants.USER_ID).getAsString(); + + return new SendLockSettingsMessage(meetingId, userId, settingsMap); + } + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPageCountErrorMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPageCountErrorMessage.java new file mode 100755 index 0000000000..3adc9fa711 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPageCountErrorMessage.java @@ -0,0 +1,80 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendPageCountErrorMessage implements IPublishedMessage { + public static final String SEND_PAGE_COUNT_ERROR = "send_page_count_error"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String messageKey; + public final String code; + public final String presId; + public final int numberOfPages; + public final int maxNumberPages; + public final String presName; + + public SendPageCountErrorMessage(String messageKey, String meetingId, + String code, String presId, int numberOfPages, int maxNumberPages, + String presName) { + this.meetingId = meetingId; + this.messageKey = messageKey; + this.code = code; + this.presId = presId; + this.numberOfPages = numberOfPages; + this.maxNumberPages = maxNumberPages; + this.presName = presName; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.MESSAGE_KEY, messageKey); + payload.put(Constants.CODE, code); + payload.put(Constants.PRESENTATION_ID, presId); + payload.put(Constants.NUM_PAGES, numberOfPages); + payload.put(Constants.MAX_NUM_PAGES, maxNumberPages); + payload.put(Constants.PRESENTATION_NAME, presName); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_PAGE_COUNT_ERROR, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendPageCountErrorMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_PAGE_COUNT_ERROR.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MESSAGE_KEY) + && payload.has(Constants.CODE) + && payload.has(Constants.PRESENTATION_ID) + && payload.has(Constants.MAX_NUM_PAGES) + && payload.has(Constants.NUM_PAGES) + && payload.has(Constants.PRESENTATION_NAME)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String messageKey = payload.get(Constants.MESSAGE_KEY).getAsString(); + String code = payload.get(Constants.CODE).getAsString(); + String presId = payload.get(Constants.PRESENTATION_ID).getAsString(); + int numberOfPages = payload.get(Constants.NUM_PAGES).getAsInt(); + int maxNumberPages = payload.get(Constants.MAX_NUM_PAGES).getAsInt(); + String presName = payload.get(Constants.PRESENTATION_NAME).getAsString(); + + return new SendPageCountErrorMessage(messageKey, meetingId, code, presId, numberOfPages, maxNumberPages, presName); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPrivateChatMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPrivateChatMessage.java new file mode 100755 index 0000000000..35dcadcf76 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPrivateChatMessage.java @@ -0,0 +1,115 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendPrivateChatMessage implements IPublishedMessage { + public static final String SEND_PRIVATE_CHAT_MESSAGE = "send_private_chat_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final Map<String, String> messageInfo; + + public SendPrivateChatMessage(String meetingId, String requesterId, + Map<String, String> message) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.messageInfo = message; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + + Map<String, String> message = new HashMap<String, String>(); + + message.put(ChatKeyUtil.CHAT_TYPE, messageInfo.get(ChatKeyUtil.CHAT_TYPE)); + message.put(ChatKeyUtil.MESSAGE, messageInfo.get(ChatKeyUtil.MESSAGE)); + message.put(ChatKeyUtil.TO_USERNAME, messageInfo.get(ChatKeyUtil.TO_USERNAME)); + message.put(ChatKeyUtil.FROM_TZ_OFFSET, messageInfo.get(ChatKeyUtil.FROM_TZ_OFFSET)); + message.put(ChatKeyUtil.FROM_COLOR, messageInfo.get(ChatKeyUtil.FROM_COLOR)); + message.put(ChatKeyUtil.TO_USERID, messageInfo.get(ChatKeyUtil.TO_USERID)); + message.put(ChatKeyUtil.FROM_USERID, messageInfo.get(ChatKeyUtil.FROM_USERID)); + message.put(ChatKeyUtil.FROM_TIME, messageInfo.get(ChatKeyUtil.FROM_TIME)); + message.put(ChatKeyUtil.FROM_USERNAME, messageInfo.get(ChatKeyUtil.FROM_USERNAME)); + + payload.put(Constants.MESSAGE, message); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_PRIVATE_CHAT_MESSAGE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendPrivateChatMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_PRIVATE_CHAT_MESSAGE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MESSAGE)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + + JsonObject msgObj = (JsonObject) payload.get(Constants.MESSAGE).getAsJsonObject(); + Map<String, String> messageInfo = new HashMap<String, String>(); + + if (msgObj.has(ChatKeyUtil.CHAT_TYPE) + && msgObj.has(ChatKeyUtil.MESSAGE) + && msgObj.has(ChatKeyUtil.TO_USERNAME) + && msgObj.has(ChatKeyUtil.FROM_TZ_OFFSET) + && msgObj.has(ChatKeyUtil.FROM_COLOR) + && msgObj.has(ChatKeyUtil.TO_USERID) + && msgObj.has(ChatKeyUtil.FROM_USERID) + && msgObj.has(ChatKeyUtil.FROM_TIME) + && msgObj.has(ChatKeyUtil.FROM_USERNAME)){ + messageInfo.put(ChatKeyUtil.CHAT_TYPE, msgObj.get(ChatKeyUtil.CHAT_TYPE).getAsString()); + messageInfo.put(ChatKeyUtil.MESSAGE, msgObj.get(ChatKeyUtil.MESSAGE).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERNAME, msgObj.get(ChatKeyUtil.TO_USERNAME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TZ_OFFSET, msgObj.get(ChatKeyUtil.FROM_TZ_OFFSET).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_COLOR, msgObj.get(ChatKeyUtil.FROM_COLOR).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERID, msgObj.get(ChatKeyUtil.TO_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERID, msgObj.get(ChatKeyUtil.FROM_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TIME, msgObj.get(ChatKeyUtil.FROM_TIME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERNAME, msgObj.get(ChatKeyUtil.FROM_USERNAME).getAsString()); + + String requesterId = messageInfo.get(ChatKeyUtil.FROM_USERID); + + return new SendPrivateChatMessage(meetingId, requesterId, messageInfo); + } else if (msgObj.has(Constants.CHAT_TYPE) + && msgObj.has(Constants.MESSAGE) + && msgObj.has(Constants.TO_USERNAME) + && msgObj.has(Constants.FROM_TZ_OFFSET) + && msgObj.has(Constants.FROM_COLOR) + && msgObj.has(Constants.TO_USERID) + && msgObj.has(Constants.FROM_USERID) + && msgObj.has(Constants.FROM_TIME) + && msgObj.has(Constants.FROM_USERNAME)){ + messageInfo.put(ChatKeyUtil.CHAT_TYPE, msgObj.get(Constants.CHAT_TYPE).getAsString()); + messageInfo.put(ChatKeyUtil.MESSAGE, msgObj.get(Constants.MESSAGE).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERNAME, msgObj.get(Constants.TO_USERNAME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TZ_OFFSET, msgObj.get(Constants.FROM_TZ_OFFSET).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_COLOR, msgObj.get(Constants.FROM_COLOR).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERID, msgObj.get(Constants.TO_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERID, msgObj.get(Constants.FROM_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TIME, msgObj.get(Constants.FROM_TIME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERNAME, msgObj.get(Constants.FROM_USERNAME).getAsString()); + + String requesterId = messageInfo.get(ChatKeyUtil.FROM_USERID); + + return new SendPrivateChatMessage(meetingId, requesterId, messageInfo); + } + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPublicChatMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPublicChatMessage.java new file mode 100755 index 0000000000..b937264317 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendPublicChatMessage.java @@ -0,0 +1,115 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendPublicChatMessage implements IPublishedMessage { + public static final String SEND_PUBLIC_CHAT_MESSAGE = "send_public_chat_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final Map<String, String> messageInfo; + + public SendPublicChatMessage(String meetingId, String requesterId, + Map<String, String> message) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.messageInfo = message; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + + Map<String, String> message = new HashMap<String, String>(); + + message.put(ChatKeyUtil.CHAT_TYPE, messageInfo.get(ChatKeyUtil.CHAT_TYPE)); + message.put(ChatKeyUtil.MESSAGE, messageInfo.get(ChatKeyUtil.MESSAGE)); + message.put(ChatKeyUtil.TO_USERNAME, messageInfo.get(ChatKeyUtil.TO_USERNAME)); + message.put(ChatKeyUtil.FROM_TZ_OFFSET, messageInfo.get(ChatKeyUtil.FROM_TZ_OFFSET)); + message.put(ChatKeyUtil.FROM_COLOR, messageInfo.get(ChatKeyUtil.FROM_COLOR)); + message.put(ChatKeyUtil.TO_USERID, messageInfo.get(ChatKeyUtil.TO_USERID)); + message.put(ChatKeyUtil.FROM_USERID, messageInfo.get(ChatKeyUtil.FROM_USERID)); + message.put(ChatKeyUtil.FROM_TIME, messageInfo.get(ChatKeyUtil.FROM_TIME)); + message.put(ChatKeyUtil.FROM_USERNAME, messageInfo.get(ChatKeyUtil.FROM_USERNAME)); + + payload.put(Constants.MESSAGE, message); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_PUBLIC_CHAT_MESSAGE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendPublicChatMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_PUBLIC_CHAT_MESSAGE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MESSAGE)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + + JsonObject msgObj = (JsonObject) payload.get(Constants.MESSAGE).getAsJsonObject(); + Map<String, String> messageInfo = new HashMap<String, String>(); + + if (msgObj.has(ChatKeyUtil.CHAT_TYPE) + && msgObj.has(ChatKeyUtil.MESSAGE) + && msgObj.has(ChatKeyUtil.TO_USERNAME) + && msgObj.has(ChatKeyUtil.FROM_TZ_OFFSET) + && msgObj.has(ChatKeyUtil.FROM_COLOR) + && msgObj.has(ChatKeyUtil.TO_USERID) + && msgObj.has(ChatKeyUtil.FROM_USERID) + && msgObj.has(ChatKeyUtil.FROM_TIME) + && msgObj.has(ChatKeyUtil.FROM_USERNAME)){ + messageInfo.put(ChatKeyUtil.CHAT_TYPE, msgObj.get(ChatKeyUtil.CHAT_TYPE).getAsString()); + messageInfo.put(ChatKeyUtil.MESSAGE, msgObj.get(ChatKeyUtil.MESSAGE).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERNAME, msgObj.get(ChatKeyUtil.TO_USERNAME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TZ_OFFSET, msgObj.get(ChatKeyUtil.FROM_TZ_OFFSET).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_COLOR, msgObj.get(ChatKeyUtil.FROM_COLOR).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERID, msgObj.get(ChatKeyUtil.TO_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERID, msgObj.get(ChatKeyUtil.FROM_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TIME, msgObj.get(ChatKeyUtil.FROM_TIME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERNAME, msgObj.get(ChatKeyUtil.FROM_USERNAME).getAsString()); + + String requesterId = messageInfo.get(ChatKeyUtil.FROM_USERID); + + return new SendPublicChatMessage(meetingId, requesterId, messageInfo); + } else if (msgObj.has(Constants.CHAT_TYPE) + && msgObj.has(Constants.MESSAGE) + && msgObj.has(Constants.TO_USERNAME) + && msgObj.has(Constants.FROM_TZ_OFFSET) + && msgObj.has(Constants.FROM_COLOR) + && msgObj.has(Constants.TO_USERID) + && msgObj.has(Constants.FROM_USERID) + && msgObj.has(Constants.FROM_TIME) + && msgObj.has(Constants.FROM_USERNAME)){ + messageInfo.put(ChatKeyUtil.CHAT_TYPE, msgObj.get(Constants.CHAT_TYPE).getAsString()); + messageInfo.put(ChatKeyUtil.MESSAGE, msgObj.get(Constants.MESSAGE).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERNAME, msgObj.get(Constants.TO_USERNAME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TZ_OFFSET, msgObj.get(Constants.FROM_TZ_OFFSET).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_COLOR, msgObj.get(Constants.FROM_COLOR).getAsString()); + messageInfo.put(ChatKeyUtil.TO_USERID, msgObj.get(Constants.TO_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERID, msgObj.get(Constants.FROM_USERID).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_TIME, msgObj.get(Constants.FROM_TIME).getAsString()); + messageInfo.put(ChatKeyUtil.FROM_USERNAME, msgObj.get(Constants.FROM_USERNAME).getAsString()); + + String requesterId = messageInfo.get(ChatKeyUtil.FROM_USERID); + + return new SendPublicChatMessage(meetingId, requesterId, messageInfo); + } + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendSlideGeneratedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendSlideGeneratedMessage.java new file mode 100755 index 0000000000..bc325b130f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendSlideGeneratedMessage.java @@ -0,0 +1,80 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendSlideGeneratedMessage implements IPublishedMessage { + public static final String SEND_SLIDE_GENERATED = "send_slide_generated"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String messageKey; + public final String code; + public final String presId; + public final int numberOfPages; + public final int pagesCompleted; + public final String presName; + + public SendSlideGeneratedMessage(String messageKey, String meetingId, + String code, String presId, int numberOfPages, int pagesCompleted, + String presName) { + this.meetingId = meetingId; + this.messageKey = messageKey; + this.code = code; + this.presId = presId; + this.numberOfPages = numberOfPages; + this.pagesCompleted = pagesCompleted; + this.presName = presName; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.MESSAGE_KEY, messageKey); + payload.put(Constants.CODE, code); + payload.put(Constants.PRESENTATION_ID, presId); + payload.put(Constants.NUM_PAGES, numberOfPages); + payload.put(Constants.PAGES_COMPLETED, pagesCompleted); + payload.put(Constants.PRESENTATION_NAME, presName); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_SLIDE_GENERATED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SendSlideGeneratedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_SLIDE_GENERATED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.MESSAGE_KEY) + && payload.has(Constants.CODE) + && payload.has(Constants.PRESENTATION_ID) + && payload.has(Constants.PAGES_COMPLETED) + && payload.has(Constants.NUM_PAGES) + && payload.has(Constants.PRESENTATION_NAME)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String messageKey = payload.get(Constants.MESSAGE_KEY).getAsString(); + String code = payload.get(Constants.CODE).getAsString(); + String presId = payload.get(Constants.PRESENTATION_ID).getAsString(); + int numberOfPages = payload.get(Constants.NUM_PAGES).getAsInt(); + int pagesCompleted = payload.get(Constants.PAGES_COMPLETED).getAsInt(); + String presName = payload.get(Constants.PRESENTATION_NAME).getAsString(); + + return new SendSlideGeneratedMessage(messageKey, meetingId, code, presId, numberOfPages, pagesCompleted, presName); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationReplyMessage.java new file mode 100755 index 0000000000..34cc4800ed --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationReplyMessage.java @@ -0,0 +1,71 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendWhiteboardAnnotationReplyMessage implements ISubscribedMessage { + public static final String SEND_WHITEBOARD_ANNOTATION_REPLY = "send_whiteboard_shape_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final String whiteboardId; + public final Map<String, Object> shape; + + + public SendWhiteboardAnnotationReplyMessage(String meetingId, String requesterId, + String whiteboardId, Map<String, Object> shape) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + this.shape = shape; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.SHAPE, shape); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_WHITEBOARD_ANNOTATION_REPLY, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static SendWhiteboardAnnotationReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_WHITEBOARD_ANNOTATION_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.SHAPE) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + + JsonObject shape = (JsonObject) payload.get(Constants.SHAPE); + + Util util = new Util(); + Map<String, Object> annotation = util.extractOuterAnnotation(shape); + + return new SendWhiteboardAnnotationReplyMessage(meetingId, requesterId, + whiteboardId, annotation); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationRequestMessage.java new file mode 100755 index 0000000000..8a4723e540 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SendWhiteboardAnnotationRequestMessage.java @@ -0,0 +1,61 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SendWhiteboardAnnotationRequestMessage implements ISubscribedMessage { + public static final String SEND_WHITEBOARD_ANNOTATION_REQUEST = "send_whiteboard_annotation_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String requesterId; + public final Map<String, Object> annotation; + + + public SendWhiteboardAnnotationRequestMessage(String meetingId, + String requesterId, Map<String, Object> annotation) { + this.meetingId = meetingId; + this.requesterId = requesterId; + this.annotation = annotation; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.ANNOTATION, annotation); + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SEND_WHITEBOARD_ANNOTATION_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static SendWhiteboardAnnotationRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SEND_WHITEBOARD_ANNOTATION_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.ANNOTATION) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + JsonObject annotationElement = (JsonObject) payload.get(Constants.ANNOTATION); + + Util util = new Util(); + Map<String, Object> annotation = util.extractAnnotation(annotationElement); + + return new SendWhiteboardAnnotationRequestMessage(meetingId, requesterId, annotation); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetRecordingStatusRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetRecordingStatusRequestMessage.java new file mode 100755 index 0000000000..5fdd73ad6f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetRecordingStatusRequestMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class SetRecordingStatusRequestMessage implements ISubscribedMessage { + public static final String SET_RECORDING_STATUS_REQUEST = "set_recording_status_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean recording; + + public SetRecordingStatusRequestMessage(String meetingId, String userId, Boolean recording) { + this.meetingId = meetingId; + this.userId = userId; + this.recording = recording; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.RECORDING, recording); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SET_RECORDING_STATUS_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SetRecordingStatusRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SET_RECORDING_STATUS_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.RECORDING)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean recording = payload.get(Constants.RECORDING).getAsBoolean(); + return new SetRecordingStatusRequestMessage(id, userid, recording); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetUserStatusRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetUserStatusRequestMessage.java new file mode 100755 index 0000000000..e338a1b41a --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SetUserStatusRequestMessage.java @@ -0,0 +1,64 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class SetUserStatusRequestMessage implements ISubscribedMessage { + public static final String SET_USER_STATUS_REQUEST = "set_user_status_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String status; + public final String value; + + public SetUserStatusRequestMessage(String meetingId, String userId, String status, String value) { + this.meetingId = meetingId; + this.userId = userId; + this.status = status; + this.value = value; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.STATUS, status); + payload.put(Constants.VALUE, value); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SET_USER_STATUS_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SetUserStatusRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SET_USER_STATUS_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.STATUS) + && payload.has(Constants.VALUE)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String status = payload.get(Constants.STATUS).getAsString(); + String value = payload.get(Constants.VALUE).getAsString(); + return new SetUserStatusRequestMessage(id, userid, status, value); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SharePresentationMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SharePresentationMessage.java new file mode 100755 index 0000000000..cf4c114d9f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/SharePresentationMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class SharePresentationMessage implements IPublishedMessage { + public static final String SHARE_PRESENTATION = "share_presentation"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String presentationId; + public final boolean share; + + public SharePresentationMessage(String meetingId, String presentationId, + boolean share){ + this.meetingId = meetingId; + this.presentationId = presentationId; + this.share = share; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.PRESENTATION_ID, presentationId); + payload.put(Constants.SHARE, share); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(SHARE_PRESENTATION, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static SharePresentationMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (SHARE_PRESENTATION.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.PRESENTATION_ID) + && payload.has(Constants.SHARE)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String presentationId = payload.get(Constants.PRESENTATION_ID).getAsString(); + boolean share = payload.get(Constants.SHARE).getAsBoolean(); + + return new SharePresentationMessage(meetingId, presentationId, share); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartRecordingVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartRecordingVoiceConfRequestMessage.java new file mode 100755 index 0000000000..40c519e29c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartRecordingVoiceConfRequestMessage.java @@ -0,0 +1,56 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class StartRecordingVoiceConfRequestMessage { + public static final String START_RECORD_VOICE_CONF_REQUEST = "start_recording_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + + public final String meetingId; + public final String voiceConfId; + + public StartRecordingVoiceConfRequestMessage(String meetingId, String voiceConfId) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(START_RECORD_VOICE_CONF_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static StartRecordingVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (START_RECORD_VOICE_CONF_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + return new StartRecordingVoiceConfRequestMessage(id, voiceConfId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StopRecordingVoiceConfRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StopRecordingVoiceConfRequestMessage.java new file mode 100755 index 0000000000..fb84f12ef6 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StopRecordingVoiceConfRequestMessage.java @@ -0,0 +1,62 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class StopRecordingVoiceConfRequestMessage { + public static final String RECORD_VOICE_CONF_REQUEST = "stop_recording_voice_conf_request_message"; + public static final String VERSION = "0.0.1"; + + public static final String MEETING_ID = "meeting_id"; + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String RECORD_STREAM = "record_stream"; + + public final String meetingId; + public final String voiceConfId; + public final String recordStream; + + public StopRecordingVoiceConfRequestMessage(String meetingId, String voiceConfId, String recordStream) { + this.meetingId = meetingId; + this.voiceConfId = voiceConfId; + this.recordStream = recordStream; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(MEETING_ID, meetingId); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(RECORD_STREAM, recordStream); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(RECORD_VOICE_CONF_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static StopRecordingVoiceConfRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (RECORD_VOICE_CONF_REQUEST.equals(messageName)) { + if (payload.has(MEETING_ID) + && payload.has(VOICE_CONF_ID) + && payload.has(RECORD_STREAM)) { + String id = payload.get(MEETING_ID).getAsString(); + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String recordStream = payload.get(RECORD_STREAM).getAsString(); + return new StopRecordingVoiceConfRequestMessage(id, voiceConfId, recordStream); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardReplyMessage.java new file mode 100755 index 0000000000..ae9b01df01 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardReplyMessage.java @@ -0,0 +1,68 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UndoWhiteboardReplyMessage implements ISubscribedMessage { + + // the name of this event should be undo_whiteboard_reply (as it corresponds + // to undo_whiteboard_request which entered bbb-apps) + // However, on the clients we use undo_whiteboard_request for both request and reply + // + // The only difference is shapeId here. Plus this message is on channel FROM_WHITEBOARD_CHANNEL + public static final String UNDO_WHITEBOARD_REPLY = "undo_whiteboard_request";//see note above + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String whiteboardId; + public final String requesterId; + public final String shapeId; + + + public UndoWhiteboardReplyMessage(String meetingId, String requesterId, String whiteboardId, String shapeId) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + this.shapeId = shapeId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + payload.put(Constants.SHAPE_ID, shapeId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(UNDO_WHITEBOARD_REPLY, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static UndoWhiteboardReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (UNDO_WHITEBOARD_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.SHAPE_ID) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + String shapeId = payload.get(Constants.SHAPE_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + return new UndoWhiteboardReplyMessage(meetingId, requesterId, whiteboardId, shapeId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardRequest.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardRequest.java new file mode 100755 index 0000000000..b6c3709a3b --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UndoWhiteboardRequest.java @@ -0,0 +1,58 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UndoWhiteboardRequest implements ISubscribedMessage { + public static final String UNDO_WHITEBOARD_REQUEST = "undo_whiteboard_request"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String whiteboardId; + public final String requesterId; + + + public UndoWhiteboardRequest(String meetingId, String requesterId, String whiteboardId) { + this.meetingId = meetingId; + this.whiteboardId = whiteboardId; + this.requesterId = requesterId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.WHITEBOARD_ID, whiteboardId); + payload.put(Constants.REQUESTER_ID, requesterId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(UNDO_WHITEBOARD_REQUEST, VERSION, null); + return MessageBuilder.buildJson(header, payload); + } + + public static UndoWhiteboardRequest fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (UNDO_WHITEBOARD_REQUEST.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.WHITEBOARD_ID) + && payload.has(Constants.REQUESTER_ID)) { + String meetingId = payload.get(Constants.MEETING_ID).getAsString(); + String whiteboardId = payload.get(Constants.WHITEBOARD_ID).getAsString(); + String requesterId = payload.get(Constants.REQUESTER_ID).getAsString(); + + return new UndoWhiteboardRequest(meetingId, requesterId, whiteboardId); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserConnectedToGlobalAudio.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserConnectedToGlobalAudio.java new file mode 100755 index 0000000000..a58cec926e --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserConnectedToGlobalAudio.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UserConnectedToGlobalAudio implements IPublishedMessage { + public static final String USER_CONNECTED_TO_GLOBAL_AUDIO = "user_connected_to_global_audio"; + public static final String VERSION = "0.0.1"; + + public final String voiceConf; + public final String name; + public final String userid; + + + + public UserConnectedToGlobalAudio(String voiceConf, String userid, String name) { + this.voiceConf = voiceConf; + this.userid = userid; + this.name = name; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.VOICE_CONF, voiceConf); + payload.put(Constants.USER_ID, userid); + payload.put(Constants.NAME, name); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_CONNECTED_TO_GLOBAL_AUDIO, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserConnectedToGlobalAudio fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_CONNECTED_TO_GLOBAL_AUDIO.equals(messageName)) { + if (payload.has(Constants.VOICE_CONF) + && payload.has(Constants.USER_ID) + && payload.has(Constants.NAME)) { + String voiceConf = payload.get(Constants.VOICE_CONF).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String name = payload.get(Constants.NAME).getAsString(); + return new UserConnectedToGlobalAudio(voiceConf, userid, name); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserDisconnectedFromGlobalAudio.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserDisconnectedFromGlobalAudio.java new file mode 100755 index 0000000000..95218e2787 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserDisconnectedFromGlobalAudio.java @@ -0,0 +1,57 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UserDisconnectedFromGlobalAudio implements IPublishedMessage { + public static final String USER_DISCONNECTED_FROM_GLOBAL_AUDIO = "user_disconnected_from_global_audio"; + public static final String VERSION = "0.0.1"; + + public final String voiceConf; + public final String name; + public final String userid; + + public UserDisconnectedFromGlobalAudio(String voiceConf, String userid, String name) { + this.voiceConf = voiceConf; + this.userid = userid; + this.name = name; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.VOICE_CONF, voiceConf); + payload.put(Constants.USER_ID, userid); + payload.put(Constants.NAME, name); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_DISCONNECTED_FROM_GLOBAL_AUDIO, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserDisconnectedFromGlobalAudio fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_DISCONNECTED_FROM_GLOBAL_AUDIO.equals(messageName)) { + if (payload.has(Constants.VOICE_CONF) + && payload.has(Constants.USER_ID) + && payload.has(Constants.NAME)) { + String voiceConf = payload.get(Constants.VOICE_CONF).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String name = payload.get(Constants.NAME).getAsString(); + return new UserDisconnectedFromGlobalAudio(voiceConf, userid, name); + } + } + } + } + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedMessage.java new file mode 100755 index 0000000000..0cd267bc9e --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UserJoinedMessage implements ISubscribedMessage { + public static final String USER_JOINED = "user_joined_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Object> user; + + public UserJoinedMessage(String meetingID, Map<String, Object> user) { + this.meetingId = meetingID; + this.user = user; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_JOINED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static UserJoinedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_JOINED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + + JsonObject user = (JsonObject) payload.get(Constants.USER); + + Util util = new Util(); + Map<String, Object> userMap = util.extractUser(user); + + if (userMap != null) { + return new UserJoinedMessage(meetingID, userMap); + } + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceConfMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceConfMessage.java new file mode 100755 index 0000000000..cf8319dab0 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceConfMessage.java @@ -0,0 +1,87 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserJoinedVoiceConfMessage { + public static final String USER_JOINED_VOICE_CONF = "user_joined_voice_conf_message"; + public static final String VERSION = "0.0.1"; + + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + public static final String USER_ID = "user_id"; + public static final String CALLER_ID_NAME = "caller_id_name"; + public static final String CALLER_ID_NUM = "caller_id_num"; + public static final String MUTED = "muted"; + public static final String TALKING = "talking"; + + public final String voiceConfId; + public final String voiceUserId; + public final String userId; + public final String callerIdName; + public final String callerIdNum; + public final Boolean muted; + public final Boolean talking; + + public UserJoinedVoiceConfMessage(String voiceConfId, String voiceUserId, String userId, + String callerIdName, String callerIdNum, Boolean muted, Boolean talking) { + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + this.userId = userId; + this.callerIdName = callerIdName; + this.callerIdNum = callerIdNum; + this.muted = muted; + this.talking = talking; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + payload.put(USER_ID, userId); + payload.put(CALLER_ID_NAME, callerIdName); + payload.put(CALLER_ID_NUM, callerIdNum); + payload.put(MUTED, muted); + payload.put(TALKING, talking); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_JOINED_VOICE_CONF, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserJoinedVoiceConfMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_JOINED_VOICE_CONF.equals(messageName)) { + if (payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID) + && payload.has(USER_ID) + && payload.has(CALLER_ID_NAME) + && payload.has(CALLER_ID_NUM) + && payload.has(MUTED) + && payload.has(TALKING)) { + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + String userId = payload.get(USER_ID).getAsString(); + String callerIdName = payload.get(CALLER_ID_NAME).getAsString(); + String callerIdNum = payload.get(CALLER_ID_NUM).getAsString(); + Boolean muted = payload.get(MUTED).getAsBoolean(); + Boolean talking = payload.get(TALKING).getAsBoolean(); + return new UserJoinedVoiceConfMessage(voiceConfId, voiceUserId, userId, callerIdName, callerIdNum, muted, talking); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceMessage.java new file mode 100755 index 0000000000..9231fb66c4 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserJoinedVoiceMessage.java @@ -0,0 +1,66 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserJoinedVoiceMessage implements ISubscribedMessage { + public static final String USER_JOINED_VOICE = "user_joined_voice_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Object> user; + public final String voiceConf; + + public UserJoinedVoiceMessage(String meetingId, Map<String, Object> user, String voiceConf) { + this.meetingId = meetingId; + this.user = user; + this.voiceConf = voiceConf; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER, user); + payload.put(Constants.VOICE_CONF, voiceConf); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_JOINED_VOICE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserJoinedVoiceMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_JOINED_VOICE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String voiceConf = payload.get(Constants.VOICE_CONF).getAsString(); + + JsonObject user = (JsonObject) payload.get(Constants.USER); + + Util util = new Util(); + Map<String, Object> userMap = util.extractUser(user); + + if (userMap != null) { + return new UserJoinedVoiceMessage(id, userMap, voiceConf); + } + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeavingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeavingMessage.java new file mode 100755 index 0000000000..8945520836 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeavingMessage.java @@ -0,0 +1,52 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UserLeavingMessage implements ISubscribedMessage { + public static final String USER_LEAVING = "user_leaving_request"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + + public UserLeavingMessage(String meetingID, String internalUserId) { + this.meetingId = meetingID; + this.userId = internalUserId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LEAVING, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static UserLeavingMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LEAVING.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + return new UserLeavingMessage(meetingID, userid); + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftMessage.java new file mode 100755 index 0000000000..037d4681fd --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class UserLeftMessage implements ISubscribedMessage { + public static final String USER_LEFT = "user_left_message"; + public final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Object> user; + + public UserLeftMessage(String meetingID, Map<String, Object> user) { + this.meetingId = meetingID; + this.user = user; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LEFT, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + public static UserLeftMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LEFT.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER)) { + String meetingID = payload.get(Constants.MEETING_ID).getAsString(); + + JsonObject user = (JsonObject) payload.get(Constants.USER); + + Util util = new Util(); + Map<String, Object> userMap = util.extractUser(user); + + if (userMap != null) { + return new UserLeftMessage(meetingID, userMap); + } + } + } + } + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceConfMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceConfMessage.java new file mode 100755 index 0000000000..fe94818eb4 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceConfMessage.java @@ -0,0 +1,56 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserLeftVoiceConfMessage { + public static final String USER_LEFT_VOICE_CONF = "user_left_voice_conf_message"; + public static final String VERSION = "0.0.1"; + + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + + public final String voiceConfId; + public final String voiceUserId; + + public UserLeftVoiceConfMessage(String voiceConfId, String voiceUserId) { + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LEFT_VOICE_CONF, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserLeftVoiceConfMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LEFT_VOICE_CONF.equals(messageName)) { + if (payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID)) { + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + return new UserLeftVoiceConfMessage(voiceConfId, voiceUserId); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceMessage.java new file mode 100755 index 0000000000..8e647a6bbf --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLeftVoiceMessage.java @@ -0,0 +1,66 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserLeftVoiceMessage implements ISubscribedMessage { + public static final String USER_LEFT_VOICE = "user_left_voice_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Object> user; + public final String voiceConf; + + public UserLeftVoiceMessage(String meetingId, Map<String, Object> user, String voiceConf) { + this.meetingId = meetingId; + this.user = user; + this.voiceConf = voiceConf; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER, user); + payload.put(Constants.VOICE_CONF, voiceConf); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LEFT_VOICE, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserLeftVoiceMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LEFT_VOICE.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String voiceConf = payload.get(Constants.VOICE_CONF).getAsString(); + + JsonObject user = (JsonObject) payload.get(Constants.USER); + + Util util = new Util(); + Map<String, Object> userMap = util.extractUser(user); + + if (userMap != null) { + return new UserLeftVoiceMessage(id, userMap, voiceConf); + } + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserListeningOnlyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserListeningOnlyMessage.java new file mode 100755 index 0000000000..5f352b2645 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserListeningOnlyMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserListeningOnlyMessage implements ISubscribedMessage { + public static final String USER_LISTENING_ONLY = "user_listening_only"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean listenOnly; + + public UserListeningOnlyMessage(String meetingId, String userId, Boolean listenOnly) { + this.meetingId = meetingId; + this.userId = userId; + this.listenOnly = listenOnly; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.LISTEN_ONLY, listenOnly); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LISTENING_ONLY, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserListeningOnlyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LISTENING_ONLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.LISTEN_ONLY)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean listenOnly = payload.get(Constants.LISTEN_ONLY).getAsBoolean(); + return new UserListeningOnlyMessage(id, userid, listenOnly); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedInVoiceConfMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedInVoiceConfMessage.java new file mode 100755 index 0000000000..d9fb7b85e1 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedInVoiceConfMessage.java @@ -0,0 +1,62 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserLockedInVoiceConfMessage { + public static final String USER_LOCKED_IN_VOICE_CONF = "user_locked_in_voice_conf_message"; + public static final String VERSION = "0.0.1"; + + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + public static final String LOCKED = "locked"; + + public final String voiceConfId; + public final String voiceUserId; + public final Boolean locked; + + public UserLockedInVoiceConfMessage(String voiceConfId, String voiceUserId, Boolean locked) { + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + this.locked = locked; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + payload.put(LOCKED, locked); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LOCKED_IN_VOICE_CONF, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserLockedInVoiceConfMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LOCKED_IN_VOICE_CONF.equals(messageName)) { + if (payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID) + && payload.has(LOCKED)) { + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + Boolean locked = payload.get(LOCKED).getAsBoolean(); + return new UserLockedInVoiceConfMessage(voiceConfId, voiceUserId, locked); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedMessage.java new file mode 100755 index 0000000000..c9c6aa8f3b --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLockedMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserLockedMessage implements ISubscribedMessage { + public static final String USER_LOCKED = "user_locked_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean locked; + + public UserLockedMessage(String meetingId, String userId, Boolean locked) { + this.meetingId = meetingId; + this.userId = userId; + this.locked = locked; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.LOCKED, locked); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LOCKED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserLockedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LOCKED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.LOCKED)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean locked = payload.get(Constants.LOCKED).getAsBoolean(); + return new UserLockedMessage(id, userid, locked); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLoweredHandMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLoweredHandMessage.java new file mode 100755 index 0000000000..fbc44a432f --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserLoweredHandMessage.java @@ -0,0 +1,64 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserLoweredHandMessage implements ISubscribedMessage { + public static final String USER_LOWERED_HAND = "user_lowered_hand_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean raisedHand; + public final String loweredBy; + + public UserLoweredHandMessage(String meetingId, String userId, Boolean raisedHand, String loweredBy) { + this.meetingId = meetingId; + this.userId = userId; + this.raisedHand = raisedHand; + this.loweredBy = loweredBy; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.RAISE_HAND, raisedHand); + payload.put(Constants.LOWERED_BY, loweredBy); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_LOWERED_HAND, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserLoweredHandMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_LOWERED_HAND.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.RAISE_HAND) + && payload.has(Constants.LOWERED_BY)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean raisedHand = payload.get(Constants.RAISE_HAND).getAsBoolean(); + String loweredBy = payload.get(Constants.LOWERED_BY).getAsString(); + return new UserLoweredHandMessage(id, userid, raisedHand, loweredBy); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserMutedInVoiceConfMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserMutedInVoiceConfMessage.java new file mode 100755 index 0000000000..cb87b8c98b --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserMutedInVoiceConfMessage.java @@ -0,0 +1,62 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserMutedInVoiceConfMessage { + public static final String USER_MUTED_IN_VOICE_CONF = "user_muted_in_voice_conf_message"; + public static final String VERSION = "0.0.1"; + + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + public static final String MUTED = "muted"; + + public final String voiceConfId; + public final String voiceUserId; + public final Boolean muted; + + public UserMutedInVoiceConfMessage(String voiceConfId, String voiceUserId, Boolean muted) { + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + this.muted = muted; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + payload.put(MUTED, muted); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_MUTED_IN_VOICE_CONF, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserMutedInVoiceConfMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_MUTED_IN_VOICE_CONF.equals(messageName)) { + if (payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID) + && payload.has(MUTED)) { + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + Boolean muted = payload.get(MUTED).getAsBoolean(); + return new UserMutedInVoiceConfMessage(voiceConfId, voiceUserId, muted); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserRaisedHandMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserRaisedHandMessage.java new file mode 100755 index 0000000000..5c2e5501af --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserRaisedHandMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserRaisedHandMessage implements ISubscribedMessage { + public static final String USER_RAISED_HAND = "user_raised_hand_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final Boolean raisedHand; + + public UserRaisedHandMessage(String meetingId, String userId, Boolean raisedHand) { + this.meetingId = meetingId; + this.userId = userId; + this.raisedHand = raisedHand; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.RAISE_HAND, raisedHand); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_RAISED_HAND, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserRaisedHandMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_RAISED_HAND.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.RAISE_HAND)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + Boolean raisedHand = payload.get(Constants.RAISE_HAND).getAsBoolean(); + return new UserRaisedHandMessage(id, userid, raisedHand); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserShareWebcamRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserShareWebcamRequestMessage.java new file mode 100755 index 0000000000..225580e1aa --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserShareWebcamRequestMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserShareWebcamRequestMessage implements ISubscribedMessage { + public static final String USER_SHARE_WEBCAM_REQUEST = "user_share_webcam_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String stream; + + public UserShareWebcamRequestMessage(String meetingId, String userId, String stream) { + this.meetingId = meetingId; + this.userId = userId; + this.stream = stream; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.STREAM, stream); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_SHARE_WEBCAM_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserShareWebcamRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_SHARE_WEBCAM_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.STREAM)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String stream = payload.get(Constants.STREAM).getAsString(); + return new UserShareWebcamRequestMessage(id, userid, stream); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserSharedWebcamMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserSharedWebcamMessage.java new file mode 100755 index 0000000000..5789b3942d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserSharedWebcamMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserSharedWebcamMessage implements ISubscribedMessage { + public static final String USER_SHARED_WEBCAM = "user_shared_webcam_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String stream; + + public UserSharedWebcamMessage(String meetingId, String userId, String stream) { + this.meetingId = meetingId; + this.userId = userId; + this.stream = stream; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.STREAM, stream); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_SHARED_WEBCAM, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserSharedWebcamMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_SHARED_WEBCAM.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.STREAM)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String stream = payload.get(Constants.STREAM).getAsString(); + return new UserSharedWebcamMessage(id, userid, stream); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserStatusChangedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserStatusChangedMessage.java new file mode 100755 index 0000000000..f643e72eb4 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserStatusChangedMessage.java @@ -0,0 +1,65 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserStatusChangedMessage implements ISubscribedMessage { + public static final String USER_STATUS_CHANGED = "user_status_changed_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String status; + public final String value; + + public UserStatusChangedMessage(String meetingId, String userId, String status, + String value) { + this.meetingId = meetingId; + this.userId = userId; + this.status = status; + this.value = value; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.STATUS, status); + payload.put(Constants.VALUE, value); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_STATUS_CHANGED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserStatusChangedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_STATUS_CHANGED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.STATUS) + && payload.has(Constants.VALUE)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String status = payload.get(Constants.STATUS).getAsString(); + String value = payload.get(Constants.VALUE).getAsString(); + return new UserStatusChangedMessage(id, userid, status, value); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserTalkingInVoiceConfMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserTalkingInVoiceConfMessage.java new file mode 100755 index 0000000000..461337e16d --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserTalkingInVoiceConfMessage.java @@ -0,0 +1,62 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserTalkingInVoiceConfMessage { + public static final String USER_TALKING_IN_VOICE_CONF = "user_talking_in_voice_conf_message"; + public static final String VERSION = "0.0.1"; + + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String VOICE_USER_ID = "voice_user_id"; + public static final String TALKING = "talking"; + + public final String voiceConfId; + public final String voiceUserId; + public final Boolean talking; + + public UserTalkingInVoiceConfMessage(String voiceConfId, String voiceUserId, Boolean talking) { + this.voiceConfId = voiceConfId; + this.voiceUserId = voiceUserId; + this.talking = talking; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(VOICE_USER_ID, voiceUserId); + payload.put(TALKING, talking); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_TALKING_IN_VOICE_CONF, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserTalkingInVoiceConfMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_TALKING_IN_VOICE_CONF.equals(messageName)) { + if (payload.has(VOICE_CONF_ID) + && payload.has(VOICE_USER_ID) + && payload.has(TALKING)) { + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String voiceUserId = payload.get(VOICE_USER_ID).getAsString(); + Boolean talking = payload.get(TALKING).getAsBoolean(); + return new UserTalkingInVoiceConfMessage(voiceConfId, voiceUserId, talking); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnshareWebcamRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnshareWebcamRequestMessage.java new file mode 100755 index 0000000000..051b91db02 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnshareWebcamRequestMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserUnshareWebcamRequestMessage implements ISubscribedMessage { + public static final String USER_UNSHARE_WEBCAM_REQUEST = "user_unshare_webcam_request_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String stream; + + public UserUnshareWebcamRequestMessage(String meetingId, String userId, String stream) { + this.meetingId = meetingId; + this.userId = userId; + this.stream = stream; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.STREAM, stream); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_UNSHARE_WEBCAM_REQUEST, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserUnshareWebcamRequestMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_UNSHARE_WEBCAM_REQUEST.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.STREAM)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String stream = payload.get(Constants.STREAM).getAsString(); + return new UserUnshareWebcamRequestMessage(id, userid, stream); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnsharedWebcamMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnsharedWebcamMessage.java new file mode 100755 index 0000000000..8ae89d0348 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserUnsharedWebcamMessage.java @@ -0,0 +1,59 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserUnsharedWebcamMessage implements ISubscribedMessage { + public static final String USER_UNSHARED_WEBCAM = "user_unshared_webcam_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String stream; + + public UserUnsharedWebcamMessage(String meetingId, String userId, String stream) { + this.meetingId = meetingId; + this.userId = userId; + this.stream = stream; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.STREAM, stream); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_UNSHARED_WEBCAM, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserUnsharedWebcamMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_UNSHARED_WEBCAM.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.STREAM)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String stream = payload.get(Constants.STREAM).getAsString(); + return new UserUnsharedWebcamMessage(id, userid, stream); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceMutedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceMutedMessage.java new file mode 100755 index 0000000000..a994267071 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceMutedMessage.java @@ -0,0 +1,66 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserVoiceMutedMessage implements ISubscribedMessage { + public static final String USER_VOICE_MUTED = "user_voice_muted_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Object> user; + public final String voiceConf; + + public UserVoiceMutedMessage(String meetingId, Map<String, Object> user, String voiceConf) { + this.meetingId = meetingId; + this.user = user; + this.voiceConf = voiceConf; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER, user); + payload.put(Constants.VOICE_CONF, voiceConf); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_VOICE_MUTED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserVoiceMutedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_VOICE_MUTED.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String voiceConf = payload.get(Constants.VOICE_CONF).getAsString(); + + JsonObject user = (JsonObject) payload.get(Constants.USER); + + Util util = new Util(); + Map<String, Object> userMap = util.extractUser(user); + + if (userMap != null) { + return new UserVoiceMutedMessage(id, userMap, voiceConf); + } + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceTalkingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceTalkingMessage.java new file mode 100755 index 0000000000..2445d97e71 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/UserVoiceTalkingMessage.java @@ -0,0 +1,66 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class UserVoiceTalkingMessage implements ISubscribedMessage { + public static final String USER_VOICE_TALKING = "user_voice_talking_message"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final Map<String, Object> user; + public final String voiceConf; + + public UserVoiceTalkingMessage(String meetingId, Map<String, Object> user, String voiceConf) { + this.meetingId = meetingId; + this.user = user; + this.voiceConf = voiceConf; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER, user); + payload.put(Constants.VOICE_CONF, voiceConf); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(USER_VOICE_TALKING, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static UserVoiceTalkingMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (USER_VOICE_TALKING.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String voiceConf = payload.get(Constants.VOICE_CONF).getAsString(); + + JsonObject user = (JsonObject) payload.get(Constants.USER); + + Util util = new Util(); + Map<String, Object> userMap = util.extractUser(user); + + if (userMap != null) { + return new UserVoiceTalkingMessage(id, userMap, voiceConf); + } + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java new file mode 100755 index 0000000000..33bcdc4059 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java @@ -0,0 +1,425 @@ +package org.bigbluebutton.common.messages; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +public class Util { + public Map<String, Boolean> extractPermission(JsonObject vu) { + if (vu.has(Constants.PERM_DISABLE_CAM) && vu.has(Constants.PERM_DISABLE_MIC) + && vu.has(Constants.PERM_DISABLE_PRIVCHAT) && vu.has(Constants.PERM_DISABLE_PUBCHAT) + && vu.has(Constants.PERM_LOCKED_LAYOUT) && vu.has(Constants.PERM_LOCK_ON_JOIN) + && vu.has(Constants.PERM_LOCK_ON_JOIN_CONFIG)){ + + Map<String, Boolean> vuMap = new HashMap<String, Boolean>(); + Boolean disableCam = vu.get(Constants.PERM_DISABLE_CAM).getAsBoolean(); + Boolean disableMic = vu.get(Constants.PERM_DISABLE_MIC).getAsBoolean(); + Boolean disablePrivChat = vu.get(Constants.PERM_DISABLE_PRIVCHAT).getAsBoolean(); + Boolean disablePubChat = vu.get(Constants.PERM_DISABLE_PUBCHAT).getAsBoolean(); + Boolean lockedLayout = vu.get(Constants.PERM_LOCKED_LAYOUT).getAsBoolean(); + Boolean lockOnJoin = vu.get(Constants.PERM_LOCK_ON_JOIN).getAsBoolean(); + Boolean lockOnJoinConfig = vu.get(Constants.PERM_LOCK_ON_JOIN_CONFIG).getAsBoolean(); + + vuMap.put(Constants.PERM_DISABLE_CAM, disableCam); + vuMap.put(Constants.PERM_DISABLE_MIC, disableMic); + vuMap.put(Constants.PERM_DISABLE_PRIVCHAT, disablePrivChat); + vuMap.put(Constants.PERM_DISABLE_PUBCHAT, disablePubChat); + vuMap.put(Constants.PERM_LOCKED_LAYOUT, lockedLayout); + vuMap.put(Constants.PERM_LOCK_ON_JOIN, lockOnJoin); + vuMap.put(Constants.PERM_LOCK_ON_JOIN_CONFIG, lockOnJoinConfig); + + return vuMap; + } + return null; + } + + public Map<String, Object> extractVoiceUser(JsonObject vu) { + if (vu.has(Constants.TALKING) && vu.has(Constants.LOCKED) + && vu.has(Constants.MUTED) && vu.has(Constants.JOINED) + && vu.has(Constants.CALLERNAME) && vu.has(Constants.CALLERNUM) + && vu.has(Constants.WEB_USERID) && vu.has(Constants.USER_ID)){ + + Map<String, Object> vuMap = new HashMap<String, Object>(); + Boolean talking = vu.get(Constants.TALKING).getAsBoolean(); + Boolean voiceLocked = vu.get(Constants.LOCKED).getAsBoolean(); + Boolean muted = vu.get(Constants.MUTED).getAsBoolean(); + Boolean joined = vu.get(Constants.JOINED).getAsBoolean(); + String callername = vu.get(Constants.CALLERNAME).getAsString(); + String callernum = vu.get(Constants.CALLERNUM).getAsString(); + String webUserId = vu.get(Constants.WEB_USERID).getAsString(); + String voiceUserId = vu.get(Constants.USER_ID).getAsString(); + + vuMap.put("talking", talking); + vuMap.put("locked", voiceLocked); + vuMap.put("muted", muted); + vuMap.put("joined", joined); + vuMap.put("callerName", callername); + vuMap.put("callerNum", callernum); + vuMap.put("webUserId", webUserId); + vuMap.put("userId", voiceUserId); + + return vuMap; + } + return null; + } + + public Map<String, Object> extractUser(JsonObject user) { + if (user.has(Constants.USER_ID) && user.has(Constants.NAME) + && user.has(Constants.HAS_STREAM) && user.has(Constants.LISTENONLY) + && user.has(Constants.RAISE_HAND) && user.has(Constants.PHONE_USER) + && user.has(Constants.PRESENTER) && user.has(Constants.LOCKED) + && user.has(Constants.EXTERN_USERID) && user.has(Constants.ROLE) + && user.has(Constants.VOICEUSER)){ + + Map<String, Object> userMap = new HashMap<String, Object>(); + + String userid = user.get(Constants.USER_ID).getAsString(); + String username = user.get(Constants.NAME).getAsString(); + Boolean hasStream = user.get(Constants.HAS_STREAM).getAsBoolean(); + Boolean listenOnly = user.get(Constants.LISTENONLY).getAsBoolean(); + Boolean raiseHand = user.get(Constants.RAISE_HAND).getAsBoolean(); + Boolean phoneUser = user.get(Constants.PHONE_USER).getAsBoolean(); + Boolean presenter = user.get(Constants.PRESENTER).getAsBoolean(); + Boolean locked = user.get(Constants.LOCKED).getAsBoolean(); + String extUserId = user.get(Constants.EXTERN_USERID).getAsString(); + String role = user.get(Constants.ROLE).getAsString(); + + userMap.put("userId", userid); + userMap.put("name", username); + userMap.put("listenOnly", listenOnly); + userMap.put("hasStream", hasStream); + userMap.put("raiseHand", raiseHand); + userMap.put("externUserID", extUserId); + userMap.put("phoneUser", phoneUser); + userMap.put("locked", locked); + userMap.put("role", role); + userMap.put("presenter", presenter); + + JsonObject vu = (JsonObject) user.get(Constants.VOICEUSER); + + Map<String, Object> vuMap = extractVoiceUser(vu); + if (vuMap != null) { + userMap.put("voiceUser", vuMap); + return userMap; + } + } + + return null; + + } + + public ArrayList<Map<String, Object>> extractChatHistory(JsonArray history) { + ArrayList<Map<String, Object>> collection = new ArrayList<Map<String, Object>>(); + Iterator<JsonElement> historyIter = history.iterator(); + while (historyIter.hasNext()){ + JsonElement chat = historyIter.next(); + Map<String, Object> chatMap = extractChat((JsonObject)chat); + if (chatMap != null) { + collection.add(chatMap); + } + } + return collection; + } + + private Map<String, Object> extractChat(JsonObject chat) { + + if (chat.has(Constants.FROM_COLOR) + && chat.has(Constants.MESSAGE) + && chat.has(Constants.TO_USERNAME) + && chat.has(Constants.FROM_TZ_OFFSET) + && chat.has(Constants.FROM_COLOR) + && chat.has(Constants.TO_USERID) + && chat.has(Constants.FROM_USERID) + && chat.has(Constants.FROM_TIME) + && chat.has(Constants.FROM_USERNAME)){ + + Map<String, Object> chatMap = new HashMap<String, Object>(); + + chatMap.put(ChatKeyUtil.CHAT_TYPE, chat.get(Constants.CHAT_TYPE).getAsString()); + chatMap.put(ChatKeyUtil.MESSAGE, chat.get(Constants.MESSAGE).getAsString()); + chatMap.put(ChatKeyUtil.TO_USERNAME, chat.get(Constants.TO_USERNAME).getAsString()); + chatMap.put(ChatKeyUtil.FROM_TZ_OFFSET, chat.get(Constants.FROM_TZ_OFFSET).getAsString()); + chatMap.put(ChatKeyUtil.FROM_COLOR, chat.get(Constants.FROM_COLOR).getAsString()); + chatMap.put(ChatKeyUtil.TO_USERID, chat.get(Constants.TO_USERID).getAsString()); + chatMap.put(ChatKeyUtil.FROM_USERID, chat.get(Constants.FROM_USERID).getAsString()); + chatMap.put(ChatKeyUtil.FROM_TIME, chat.get(Constants.FROM_TIME).getAsString()); + chatMap.put(ChatKeyUtil.FROM_USERNAME, chat.get(Constants.FROM_USERNAME).getAsString()); + + return chatMap; + } + return null; + } + + public ArrayList<Map<String, Object>> extractUsers(JsonArray users) { + ArrayList<Map<String, Object>> collection = new ArrayList<Map<String, Object>>(); + + Iterator<JsonElement> usersIter = users.iterator(); + while (usersIter.hasNext()){ + JsonElement user = usersIter.next(); + Map<String, Object> userMap = extractUser((JsonObject)user); + if (userMap != null) { + collection.add(userMap); + } + } + + return collection; + + } + + public ArrayList<String> extractUserids(JsonArray users) { + ArrayList<String> collection = new ArrayList<String>(); + + Iterator<JsonElement> usersIter = users.iterator(); + while (usersIter.hasNext()){ + JsonElement user = usersIter.next(); + collection.add(user.getAsString()); + } + + return collection; + + } + + public Map<String, Object> extractAnnotation(JsonObject annotationElement) { + //NON-TEXT SHAPE + if (annotationElement.has(Constants.ID) + && annotationElement.has("transparency") + && annotationElement.has("color") + && annotationElement.has("status") + && annotationElement.has("whiteboardId") + && annotationElement.has("type") + && annotationElement.has("thickness") + && annotationElement.has("points")){ + + Map<String, Object> finalAnnotation = new HashMap<String, Object>(); + + boolean transparency = annotationElement.get("transparency").getAsBoolean(); + String id = annotationElement.get(Constants.ID).getAsString(); + int color = annotationElement.get("color").getAsInt(); + String status = annotationElement.get(Constants.STATUS).getAsString(); + String whiteboardId = annotationElement.get("whiteboardId").getAsString(); + int thickness = annotationElement.get("thickness").getAsInt(); + String type = annotationElement.get("type").getAsString(); + + JsonArray pointsJsonArray = annotationElement.get("points").getAsJsonArray(); + + ArrayList<Float> pointsArray = new ArrayList<Float>(); + Iterator<JsonElement> pointIter = pointsJsonArray.iterator(); + while (pointIter.hasNext()){ + JsonElement p = pointIter.next(); + Float pf = p.getAsFloat(); + if (pf != null) { + pointsArray.add(pf); + } + } + + finalAnnotation.put("transparency", transparency); + finalAnnotation.put(Constants.ID, id); + finalAnnotation.put("color", color); + finalAnnotation.put("status", status); + finalAnnotation.put("whiteboardId", whiteboardId); + finalAnnotation.put("thickness", thickness); + finalAnnotation.put("points", pointsArray); + finalAnnotation.put("type", type); + + return finalAnnotation; + } + + // TEXT SHAPE + else if (annotationElement.has(Constants.ID) + && annotationElement.has("text") + && annotationElement.has("fontColor") + && annotationElement.has("status") + && annotationElement.has("textBoxWidth") + && annotationElement.has("fontSize") + && annotationElement.has("type") + && annotationElement.has("calcedFontSize") + && annotationElement.has("textBoxHeight") + && annotationElement.has("calcedFontSize") + && annotationElement.has("whiteboardId") + && annotationElement.has("dataPoints") + && annotationElement.has("x") + && annotationElement.has("y")){ + + Map<String, Object> finalAnnotation = new HashMap<String, Object>(); + + String text = annotationElement.get("text").getAsString(); + int fontColor = annotationElement.get("fontColor").getAsInt(); + String status = annotationElement.get(Constants.STATUS).getAsString(); + Float textBoxWidth = annotationElement.get("textBoxWidth").getAsFloat(); + int fontSize = annotationElement.get("fontSize").getAsInt(); + String type = annotationElement.get("type").getAsString(); + Float calcedFontSize = annotationElement.get("calcedFontSize").getAsFloat(); + Float textBoxHeight = annotationElement.get("textBoxHeight").getAsFloat(); + String id = annotationElement.get(Constants.ID).getAsString(); + String whiteboardId = annotationElement.get("whiteboardId").getAsString(); + Float x = annotationElement.get("x").getAsFloat(); + Float y = annotationElement.get("y").getAsFloat(); + String dataPoints = annotationElement.get("dataPoints").getAsString(); + + finalAnnotation.put("text", text); + finalAnnotation.put("fontColor", fontColor); + finalAnnotation.put(Constants.STATUS, status); + finalAnnotation.put("textBoxWidth", textBoxWidth); + finalAnnotation.put("fontSize", fontSize); + finalAnnotation.put("type", type); + finalAnnotation.put("calcedFontSize", calcedFontSize); + finalAnnotation.put("textBoxHeight", textBoxHeight); + finalAnnotation.put(Constants.ID, id); + finalAnnotation.put("whiteboardId", whiteboardId); + finalAnnotation.put("x", x); + finalAnnotation.put("y", y); + finalAnnotation.put("dataPoints", dataPoints); + + return finalAnnotation; + } + return null; + } + + public Map<String, Object> extractCurrentPresenter(JsonObject vu) { + if (vu.has(Constants.USER_ID) && vu.has(Constants.NAME) + && vu.has(Constants.ASSIGNED_BY)){ + + Map<String, Object> vuMap = new HashMap<String, Object>(); + String presenterUserId = vu.get(Constants.USER_ID).getAsString(); + String presenterName = vu.get(Constants.NAME).getAsString(); + String assignedBy = vu.get(Constants.ASSIGNED_BY).getAsString(); + + vuMap.put("userId", presenterUserId); + vuMap.put("name", presenterName); + vuMap.put("assignedBy", assignedBy); + + return vuMap; + } + return null; + } + + + public ArrayList<Map<String, Object>> extractPresentationPages(JsonArray pagesArray) { + ArrayList<Map<String, Object>> pages = new ArrayList<Map<String, Object>>(); + + Iterator<JsonElement> pagesIter = pagesArray.iterator(); + while (pagesIter.hasNext()){ + JsonObject pageObj = (JsonObject)pagesIter.next(); + if (pageObj.has("id") && pageObj.has("num") + && pageObj.has("thumb_uri") && pageObj.has("swf_uri") + && pageObj.has("txt_uri") && pageObj.has("png_uri") + && pageObj.has("current") && pageObj.has("x_offset") + && pageObj.has("y_offset") && pageObj.has("width_ratio") + && pageObj.has("height_ratio")) { + + Map<String, Object> page = new HashMap<String, Object>(); + + String pageId = pageObj.get("id").getAsString(); + Integer pageNum = pageObj.get("num").getAsInt(); + String pageThumbUri = pageObj.get("thumb_uri").getAsString(); + String pageSwfUri = pageObj.get("swf_uri").getAsString(); + String pageTxtUri = pageObj.get("txt_uri").getAsString(); + String pagePngUri = pageObj.get("png_uri").getAsString(); + + Boolean currentPage = pageObj.get("current").getAsBoolean(); + Double xOffset = pageObj.get("x_offset").getAsDouble(); + Double yOffset = pageObj.get("y_offset").getAsDouble(); + Double widthRatio = pageObj.get("width_ratio").getAsDouble(); + Double heightRatio = pageObj.get("height_ratio").getAsDouble(); + + page.put("id", pageId); + page.put("num", pageNum); + page.put("thumbUri", pageThumbUri); + page.put("swfUri", pageSwfUri); + page.put("txtUri", pageTxtUri); + page.put("pngUri", pagePngUri); + page.put("current", currentPage); + page.put("xOffset", xOffset); + page.put("yOffset", yOffset); + page.put("widthRatio", widthRatio); + page.put("heightRatio", heightRatio); + + pages.add(page); + } + } + + return pages; + } + + public ArrayList<Map<String, Object>> extractPresentations(JsonArray presArray) { + ArrayList<Map<String, Object>> presentations = new ArrayList<Map<String, Object>>(); + + Iterator<JsonElement> presentationsIter = presArray.iterator(); + while (presentationsIter.hasNext()){ + JsonObject presObj = (JsonObject)presentationsIter.next(); + if (presObj.has(Constants.ID) && presObj.has(Constants.NAME) + && presObj.has(Constants.CURRENT) && presObj.has(Constants.PAGES)) { + Map<String, Object> pres = new HashMap<String, Object>(); + + String presId = presObj.get(Constants.ID).getAsString(); + String presName = presObj.get(Constants.NAME).getAsString(); + Boolean currentPres = presObj.get(Constants.CURRENT).getAsBoolean(); + + pres.put("id", presId); + pres.put("name", presName); + pres.put("current", currentPres); + + JsonArray pagesJsonArray = presObj.get(Constants.PAGES).getAsJsonArray(); + + ArrayList<Map<String, Object>> pages = extractPresentationPages(pagesJsonArray); + // store the pages in the presentation + pres.put(Constants.PAGES, pages); + + // add this presentation into our presentations list + presentations.add(pres); + } + } + return presentations; + } + + public ArrayList<Map<String, Object>> extractShapes(JsonArray shapes) { + ArrayList<Map<String, Object>> collection = new ArrayList<Map<String, Object>>(); + + Iterator<JsonElement> shapesIter = shapes.iterator(); + while (shapesIter.hasNext()){ + JsonElement shape = shapesIter.next(); + + Map<String, Object> shapeMap = extractOuterAnnotation((JsonObject)shape); + + if (shapeMap != null) { + collection.add(shapeMap); + } + } + return collection; + } + + public Map<String, Object> extractOuterAnnotation(JsonObject annotationElement) { + + if (annotationElement.has(Constants.ID) + && annotationElement.has("shape") + && annotationElement.has("status") + && annotationElement.has("shape_type")){ + + Map<String, Object> finalAnnotation = new HashMap<String, Object>(); + + String id = annotationElement.get(Constants.ID).getAsString(); + String status = annotationElement.get("status").getAsString(); + String type = annotationElement.get("shape_type").getAsString(); + + finalAnnotation.put(Constants.ID, id); + finalAnnotation.put("type", type); + finalAnnotation.put("status", status); + finalAnnotation.put("status", status); + + JsonElement shape = annotationElement.get("shape"); + Map<String, Object> shapesMap = extractAnnotation((JsonObject)shape); + + if (shapesMap != null) { + finalAnnotation.put("shapes", shapesMap); + } + + return finalAnnotation; + } + + return null; + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenMessage.java new file mode 100755 index 0000000000..5ea99f4d37 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ValidateAuthTokenMessage implements IPublishedMessage { + public static final String VALIDATE_AUTH_TOKEN = "validate_auth_token"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String token; + public final String replyTo; + public final String sessionId; + + public ValidateAuthTokenMessage(String meetingId, String userId, String token, String replyTo, String sessionId) { + this.meetingId = meetingId; + this.userId = userId; + this.token = token; + this.replyTo = replyTo; + this.sessionId = sessionId; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.MEETING_ID, meetingId); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.AUTH_TOKEN, token); + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(VALIDATE_AUTH_TOKEN, VERSION, replyTo); + + return MessageBuilder.buildJson(header, payload); + } + + public static ValidateAuthTokenMessage fromJson(String message) { + + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (VALIDATE_AUTH_TOKEN.equals(messageName)) { + + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.AUTH_TOKEN) + && header.has(Constants.REPLY_TO)) { + + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String authToken = payload.get(Constants.AUTH_TOKEN).getAsString(); + String replyTo = header.get(Constants.REPLY_TO).getAsString(); + String sessionId = "tobeimplemented"; + return new ValidateAuthTokenMessage(id, userid, authToken, replyTo, + sessionId); + } + } + } + } + + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenReplyMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenReplyMessage.java new file mode 100755 index 0000000000..01b16000e9 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenReplyMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ValidateAuthTokenReplyMessage implements ISubscribedMessage { + public static final String VALIDATE_AUTH_TOKEN_REPLY = "validate_auth_token_reply"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String token; + public final String replyTo; + public final Boolean valid; + + public ValidateAuthTokenReplyMessage(String meetingId, String userId, String token, + Boolean valid, String replyTo) { + this.meetingId = meetingId; + this.userId = userId; + this.token = token; + this.replyTo = replyTo; + this.valid = valid; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.REPLY_TO, replyTo); + payload.put(Constants.VALID, valid); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.AUTH_TOKEN, token); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(VALIDATE_AUTH_TOKEN_REPLY, VERSION, replyTo); + + return MessageBuilder.buildJson(header, payload); + } + + public static ValidateAuthTokenReplyMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (VALIDATE_AUTH_TOKEN_REPLY.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.AUTH_TOKEN) + && payload.has(Constants.VALID) + && payload.has(Constants.REPLY_TO)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String authToken = payload.get(Constants.AUTH_TOKEN).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + Boolean valid = payload.get(Constants.VALID).getAsBoolean(); + return new ValidateAuthTokenReplyMessage(id, userid, authToken, valid, replyTo); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenTimeoutMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenTimeoutMessage.java new file mode 100755 index 0000000000..f8fdd31f54 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/ValidateAuthTokenTimeoutMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ValidateAuthTokenTimeoutMessage implements ISubscribedMessage { + public static final String VALIDATE_AUTH_TOKEN_TIMEOUT = "validate_auth_token_timeout"; + public static final String VERSION = "0.0.1"; + + public final String meetingId; + public final String userId; + public final String token; + public final String replyTo; + public final Boolean valid; + + public ValidateAuthTokenTimeoutMessage(String meetingId, String userId, String token, + Boolean valid, String replyTo) { + this.meetingId = meetingId; + this.userId = userId; + this.token = token; + this.replyTo = replyTo; + this.valid = valid; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(Constants.REPLY_TO, replyTo); + payload.put(Constants.VALID, valid); + payload.put(Constants.USER_ID, userId); + payload.put(Constants.AUTH_TOKEN, token); + payload.put(Constants.MEETING_ID, meetingId); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(VALIDATE_AUTH_TOKEN_TIMEOUT, VERSION, replyTo); + + return MessageBuilder.buildJson(header, payload); + } + + public static ValidateAuthTokenTimeoutMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (VALIDATE_AUTH_TOKEN_TIMEOUT.equals(messageName)) { + if (payload.has(Constants.MEETING_ID) + && payload.has(Constants.USER_ID) + && payload.has(Constants.AUTH_TOKEN) + && payload.has(Constants.VALID) + && payload.has(Constants.REPLY_TO)) { + String id = payload.get(Constants.MEETING_ID).getAsString(); + String userid = payload.get(Constants.USER_ID).getAsString(); + String authToken = payload.get(Constants.AUTH_TOKEN).getAsString(); + String replyTo = payload.get(Constants.REPLY_TO).getAsString(); + Boolean valid = payload.get(Constants.VALID).getAsBoolean(); + return new ValidateAuthTokenTimeoutMessage(id, userid, authToken, valid, replyTo); + } + } + } + } + return null; + + } +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/VoiceConfRecordingStartedMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/VoiceConfRecordingStartedMessage.java new file mode 100755 index 0000000000..6bd2dd455c --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/VoiceConfRecordingStartedMessage.java @@ -0,0 +1,69 @@ +package org.bigbluebutton.common.messages; + +import java.util.HashMap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + + +public class VoiceConfRecordingStartedMessage { + public static final String VOICE_CONF_RECORDING_STARTED = "voice_conf_recording_started_message"; + public static final String VERSION = "0.0.1"; + + public static final String VOICE_CONF_ID = "voice_conf_id"; + public static final String RECORD_STREAM = "record_stream"; + public static final String RECORDING = "recording"; + public static final String TIMESTAMP = "timestamp"; + + public final String voiceConfId; + public final String recordStream; + public final Boolean recording; + public final String timestamp; + + public VoiceConfRecordingStartedMessage(String voiceConfId, + String recordStream, Boolean recording, String timestamp) { + this.voiceConfId = voiceConfId; + this.recordStream = recordStream; + this.recording = recording; + this.timestamp = timestamp; + } + + public String toJson() { + HashMap<String, Object> payload = new HashMap<String, Object>(); + payload.put(VOICE_CONF_ID, voiceConfId); + payload.put(RECORD_STREAM, recordStream); + payload.put(RECORDING, recording); + payload.put(TIMESTAMP, timestamp); + + java.util.HashMap<String, Object> header = MessageBuilder.buildHeader(VOICE_CONF_RECORDING_STARTED, VERSION, null); + + return MessageBuilder.buildJson(header, payload); + } + + public static VoiceConfRecordingStartedMessage fromJson(String message) { + JsonParser parser = new JsonParser(); + JsonObject obj = (JsonObject) parser.parse(message); + + if (obj.has("header") && obj.has("payload")) { + JsonObject header = (JsonObject) obj.get("header"); + JsonObject payload = (JsonObject) obj.get("payload"); + + if (header.has("name")) { + String messageName = header.get("name").getAsString(); + if (VOICE_CONF_RECORDING_STARTED.equals(messageName)) { + if (payload.has(VOICE_CONF_ID) + && payload.has(RECORD_STREAM) + && payload.has(RECORDING) + && payload.has(TIMESTAMP)) { + String voiceConfId = payload.get(VOICE_CONF_ID).getAsString(); + String recordStream = payload.get(RECORD_STREAM).getAsString(); + Boolean recording = payload.get(RECORDING).getAsBoolean(); + String timestamp = payload.get(TIMESTAMP).getAsString(); + return new VoiceConfRecordingStartedMessage(voiceConfId, recordStream, recording, timestamp); + } + } + } + } + return null; + + } +} -- GitLab