diff --git a/bbb-common-web/.scalariform.conf b/bbb-common-web/.scalariform.conf new file mode 100644 index 0000000000000000000000000000000000000000..372b90d4b0dba48f79becc8724795b60e3456724 --- /dev/null +++ b/bbb-common-web/.scalariform.conf @@ -0,0 +1,31 @@ +#alignArguments=false +alignParameters=true +alignSingleLineCaseStatements=true +#alignSingleLineCaseStatements.maxArrowIndent=40 +#allowParamGroupsOnNewlines=false +#compactControlReadability=false +#compactStringConcatenation=false +danglingCloseParenthesis=Force +#doubleIndentClassDeclaration=false +doubleIndentConstructorArguments=true +doubleIndentMethodDeclaration=true +firstArgumentOnNewline=Force +firstParameterOnNewline=Force +#formatXml=true +#indentLocalDefs=false +#indentPackageBlocks=true +#indentSpaces=2 +#indentWithTabs=false +#multilineScaladocCommentsStartOnFirstLine=false +#newlineAtEndOfFile=false +#placeScaladocAsterisksBeneathSecondAsterisk=false +#preserveSpaceBeforeArguments=false +#rewriteArrowSymbols=false +singleCasePatternOnNewline=false +#spaceBeforeColon=false +#spaceBeforeContextColon=false +#spaceInsideBrackets=false +#spaceInsideParentheses=false +#spacesAroundMultiImports=true +#spacesWithinPatternBinders=true + diff --git a/bbb-common-web/build.sbt b/bbb-common-web/build.sbt index 0519059e3804bb645328d651ae678ce0ef83224d..b7da533f20cc9e7bf79dacb36acc23df3e33345b 100755 --- a/bbb-common-web/build.sbt +++ b/bbb-common-web/build.sbt @@ -32,6 +32,10 @@ testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/sc Seq(Revolver.settings: _*) lazy val commonWeb = (project in file(".")).settings(name := "bbb-common-web", libraryDependencies ++= Dependencies.runtime).settings(compileSettings) +// See https://github.com/scala-ide/scalariform +// Config file is in ./.scalariform.conf +scalariformAutoformat := true + //----------- // Packaging // diff --git a/bbb-common-web/project/plugins.sbt b/bbb-common-web/project/plugins.sbt index 43e8b7caf24cb96311c2c7d6d6c6d59e16f7ac2c..18b48a716a5759b65f4d6ca26bfc8dd0a57ac61f 100755 --- a/bbb-common-web/project/plugins.sbt +++ b/bbb-common-web/project/plugins.sbt @@ -1,9 +1,12 @@ + addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1") addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4") addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.2-1") +addSbtPlugin("org.scalariform" % "sbt-scalariform" % "1.8.2") + addSbtPlugin("net.vonbuchholtz" % "sbt-dependency-check" % "0.2.9") addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala index ade8617cdb8b720003304661dd8600b3206543e3..d4e430a41fde9325346d33e165b740f13f197be3 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala @@ -16,10 +16,11 @@ import org.bigbluebutton.common2.redis._ import org.bigbluebutton.common2.bus._ class BbbWebApiGWApp( - val oldMessageReceivedGW: OldMessageReceivedGW, - val screenshareRtmpServer: String, - val screenshareRtmpBroadcastApp: String, - val screenshareConfSuffix: String) extends IBbbWebApiGWApp with SystemConfiguration { + val oldMessageReceivedGW: OldMessageReceivedGW, + val screenshareRtmpServer: String, + val screenshareRtmpBroadcastApp: String, + val screenshareConfSuffix: String +) extends IBbbWebApiGWApp with SystemConfiguration { implicit val system = ActorSystem("bbb-web-common") @@ -47,23 +48,27 @@ class BbbWebApiGWApp( //msgFromAkkaAppsEventBus.subscribe(meetingManagerActorRef, fromAkkaAppsChannel) private val oldMeetingMsgHdlrActor = system.actorOf( - OldMeetingMsgHdlrActor.props(oldMessageReceivedGW), "oldMeetingMsgHdlrActor") + OldMeetingMsgHdlrActor.props(oldMessageReceivedGW), "oldMeetingMsgHdlrActor" + ) msgFromAkkaAppsEventBus.subscribe(oldMeetingMsgHdlrActor, fromAkkaAppsChannel) private val msgToAkkaAppsToJsonActor = system.actorOf( - MsgToAkkaAppsToJsonActor.props(jsonMsgToAkkaAppsBus), "msgToAkkaAppsToJsonActor") + MsgToAkkaAppsToJsonActor.props(jsonMsgToAkkaAppsBus), "msgToAkkaAppsToJsonActor" + ) msgToAkkaAppsEventBus.subscribe(msgToAkkaAppsToJsonActor, toAkkaAppsChannel) private val appsRedisSubscriberActor = system.actorOf(WebRedisSubscriberActor.props(system, receivedJsonMsgBus, oldMessageEventBus), "appsRedisSubscriberActor") private val receivedJsonMsgHdlrActor = system.actorOf( - ReceivedJsonMsgHdlrActor.props(msgFromAkkaAppsEventBus), "receivedJsonMsgHdlrActor") + ReceivedJsonMsgHdlrActor.props(msgFromAkkaAppsEventBus), "receivedJsonMsgHdlrActor" + ) receivedJsonMsgBus.subscribe(receivedJsonMsgHdlrActor, fromAkkaAppsJsonChannel) private val oldMessageJsonReceiverActor = system.actorOf( - OldMessageJsonReceiverActor.props(oldMessageReceivedGW), "oldMessageJsonReceiverActor") + OldMessageJsonReceiverActor.props(oldMessageReceivedGW), "oldMessageJsonReceiverActor" + ) oldMessageEventBus.subscribe(oldMessageJsonReceiverActor, fromAkkaAppsOldJsonChannel) @@ -105,7 +110,8 @@ class BbbWebApiGWApp( meetingExpireWhenLastUserLeftInMinutes = meetingExpireWhenLastUserLeftInMinutes.intValue(), userInactivityInspectTimerInMinutes = userInactivityInspectTimerInMinutes.intValue(), userInactivityThresholdInMinutes = userInactivityThresholdInMinutes.intValue(), - userActivitySignResponseDelayInMinutes = userActivitySignResponseDelayInMinutes.intValue()) + userActivitySignResponseDelayInMinutes = userActivitySignResponseDelayInMinutes.intValue() + ) val password = PasswordProp(moderatorPass = moderatorPass, viewerPass = viewerPass) val recordProp = RecordProp(record = recorded.booleanValue(), autoStartRecording = autoStartRecording.booleanValue(), @@ -120,7 +126,8 @@ class BbbWebApiGWApp( val screenshareProps = ScreenshareProps( screenshareConf = voiceBridge + screenshareConfSuffix, red5ScreenshareIp = screenshareRtmpServer, - red5ScreenshareApp = screenshareRtmpBroadcastApp) + red5ScreenshareApp = screenshareRtmpBroadcastApp + ) val defaultProps = DefaultProps(meetingProp, breakoutProps, durationProps, password, recordProp, welcomeProp, voiceProp, usersProp, metadataProp, screenshareProps) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/MsgBuilder.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/MsgBuilder.scala index ba5bcd29bc864cbdb7862c51fe74b00354af95e9..b76a3a63f885cf3bb1ab1641092f55f2185d3de1 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/MsgBuilder.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/MsgBuilder.scala @@ -2,11 +2,10 @@ package org.bigbluebutton.api2 import org.bigbluebutton.api.messaging.converters.messages._ import org.bigbluebutton.api2.meeting.RegisterUser -import org.bigbluebutton.common2.domain.{DefaultProps, PageVO, PresentationVO} +import org.bigbluebutton.common2.domain.{ DefaultProps, PageVO, PresentationVO } import org.bigbluebutton.common2.msgs._ import org.bigbluebutton.presentation.messages._ - object MsgBuilder { def buildDestroyMeetingSysCmdMsg(msg: DestroyMeetingMessage): BbbCommonEnvCoreMsg = { val routing = collection.immutable.HashMap("sender" -> "bbb-web") @@ -93,7 +92,7 @@ object MsgBuilder { val pages = generatePresentationPages(msg.presId, msg.numPages.intValue(), msg.presBaseUrl) val presentation = PresentationVO(msg.presId, msg.filename, - current=msg.current.booleanValue(), pages.values.toVector, msg.downloadable.booleanValue()) + current = msg.current.booleanValue(), pages.values.toVector, msg.downloadable.booleanValue()) val body = PresentationConversionCompletedSysPubMsgBody(podId = msg.podId, messageKey = msg.key, code = msg.key, presentation) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgToAkkaAppsBus.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgToAkkaAppsBus.scala index 97fb3bbbf7a622a9a78cd4644a811e06f9da01fd..d7a589e2b54168c386a43429ee712ba18415b596 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgToAkkaAppsBus.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgToAkkaAppsBus.scala @@ -1,7 +1,7 @@ package org.bigbluebutton.api2.bus import akka.actor.ActorRef -import akka.event.{EventBus, LookupClassification} +import akka.event.{ EventBus, LookupClassification } case class JsonMsgToSendToAkkaApps(channel: String, json: String) case class JsonMsgToAkkaAppsBusMsg(val topic: String, payload: JsonMsgToSendToAkkaApps) @@ -23,7 +23,7 @@ class JsonMsgToAkkaAppsBus extends EventBus with LookupClassification { // must define a full order over the subscribers, expressed as expected from // `java.lang.Comparable.compare` override protected def compareSubscribers(a: Subscriber, b: Subscriber): Int = - a.compareTo(b) + a.compareTo(b) // determines the initial size of the index data structure // used internally (i.e. the expected number of different classifiers) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala index e21612025c28d43587c0f715fe81455e67ffd03b..c697f21821b0552dbcdb905cf398c7bdb2a8a15e 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala @@ -1,14 +1,14 @@ package org.bigbluebutton.api2.bus -import java.io.{PrintWriter, StringWriter} +import java.io.{ PrintWriter, StringWriter } import akka.actor.SupervisorStrategy.Resume -import akka.actor.{Actor, ActorLogging, OneForOneStrategy, Props} +import akka.actor.{ Actor, ActorLogging, OneForOneStrategy, Props } import org.bigbluebutton.common2.redis.MessageSender import scala.concurrent.duration._ object MessageSenderActor { - def props(msgSender: MessageSender): Props = Props(classOf[MessageSenderActor], msgSender) + def props(msgSender: MessageSender): Props = Props(classOf[MessageSenderActor], msgSender) } class MessageSenderActor(msgSender: MessageSender) extends Actor with ActorLogging { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsEventBus.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsEventBus.scala index 86853c293d77270040756b55616042d144b69292..521c0100569cdfcf03113c7dc3d2f203c21325b9 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsEventBus.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsEventBus.scala @@ -1,7 +1,7 @@ package org.bigbluebutton.api2.bus import akka.actor.ActorRef -import akka.event.{EventBus, LookupClassification} +import akka.event.{ EventBus, LookupClassification } import org.bigbluebutton.common2.msgs.BbbCommonEnvCoreMsg case class MsgToAkkaApps(val topic: String, val payload: BbbCommonEnvCoreMsg) @@ -23,7 +23,7 @@ class MsgToAkkaAppsEventBus extends EventBus with LookupClassification { // must define a full order over the subscribers, expressed as expected from // `java.lang.Comparable.compare` override protected def compareSubscribers(a: Subscriber, b: Subscriber): Int = - a.compareTo(b) + a.compareTo(b) // determines the initial size of the index data structure // used internally (i.e. the expected number of different classifiers) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsToJsonActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsToJsonActor.scala index bca1b45e2bee1ff2a723c7e4e72fa52209e10158..f68d03605a316295513c40358a9282f71aa3e1f1 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsToJsonActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgToAkkaAppsToJsonActor.scala @@ -1,6 +1,6 @@ package org.bigbluebutton.api2.bus -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{ Actor, ActorLogging, Props } import org.bigbluebutton.api2.SystemConfiguration import org.bigbluebutton.common2.msgs.BbbCommonEnvCoreMsg import org.bigbluebutton.common2.util.JsonUtil diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala index ab5af661bf3f1fec0935d364ce2e9c027538813d..f623d30fcae3e56669c6e6e584f8592e2dc508ba 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala @@ -1,9 +1,9 @@ package org.bigbluebutton.api2.bus -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{ Actor, ActorLogging, Props } import org.bigbluebutton.common2.bus.OldReceivedJsonMessage -object OldMessageJsonReceiverActor{ +object OldMessageJsonReceiverActor { def props(gw: OldMessageReceivedGW): Props = Props(classOf[OldMessageJsonReceiverActor], gw) } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageReceivedGW.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageReceivedGW.scala index 4305bf31742fcf9f5554095b66cf314dfda8e28c..7efb63ccc26f2cebebcdf5659341fae7fbfff9c5 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageReceivedGW.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageReceivedGW.scala @@ -3,7 +3,6 @@ package org.bigbluebutton.api2.bus import org.bigbluebutton.api.IReceivedOldMessageHandler import org.bigbluebutton.api.messaging.messages.IMessage - class OldMessageReceivedGW(handler: IReceivedOldMessageHandler) { def handle(msg: IMessage): Unit = { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala index 174e4951dfd5fad4a2a6c1dbd980207d78999111..c78d684342c844fbac7a7f30408da245607685ec 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala @@ -17,9 +17,9 @@ object ReceivedJsonMsgHdlrActor { class ReceivedJsonMsgHdlrActor(val msgFromAkkaAppsEventBus: MsgFromAkkaAppsEventBus) extends Actor - with ActorLogging - with SystemConfiguration - with ReceivedMessageRouter { + with ActorLogging + with SystemConfiguration + with ReceivedMessageRouter { object JsonDeserializer extends Deserializer @@ -46,7 +46,7 @@ class ReceivedJsonMsgHdlrActor(val msgFromAkkaAppsEventBus: MsgFromAkkaAppsEvent def receive = { case msg: JsonMsgFromAkkaApps => handleReceivedJsonMessage(msg) - case _ => // do nothing + case _ => // do nothing } def handleReceivedJsonMessage(msg: JsonMsgFromAkkaApps): Unit = { @@ -102,7 +102,7 @@ class ReceivedJsonMsgHdlrActor(val msgFromAkkaAppsEventBus: MsgFromAkkaAppsEvent route[RecordingStatusChangedEvtMsg](envelope, jsonNode) case _ => - //log.debug("************ Cannot route envelope name " + envelope.name) + //log.debug("************ Cannot route envelope name " + envelope.name) // do nothing } } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedMessageRouter.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedMessageRouter.scala index faeb783b0cb2c86f788a9f5168c9134e91c9fefc..6c58f29b729d45a6c82f8e64fae597d2c9757895 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedMessageRouter.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedMessageRouter.scala @@ -1,8 +1,7 @@ package org.bigbluebutton.api2.bus import org.bigbluebutton.api2.SystemConfiguration -import org.bigbluebutton.common2.msgs.{BbbCommonEnvCoreMsg, BbbCoreEnvelope, BbbCoreMsg} - +import org.bigbluebutton.common2.msgs.{ BbbCommonEnvCoreMsg, BbbCoreEnvelope, BbbCoreMsg } trait ReceivedMessageRouter extends SystemConfiguration { val msgFromAkkaAppsEventBus: MsgFromAkkaAppsEventBus diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/Recording.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/Recording.scala index 1584b300207bef03c2de675264cf8726bc972436..785ea8145ba60288af077682e5aa055671888aeb 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/Recording.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/Recording.scala @@ -2,20 +2,20 @@ package org.bigbluebutton.api2.domain import scala.collection.JavaConverters._ import scala.collection.mutable.ListBuffer -import scala.xml.{Elem, NodeSeq} +import scala.xml.{ Elem, NodeSeq } object RecMeta { def getMeetingId(r: RecMeta): String = { r.meeting match { case Some(m) => m.externalId - case None => r.id + case None => r.id } } def getInternalId(r: RecMeta): Option[String] = { r.meeting match { case Some(m) => Some(m.id) - case None => None + case None => None } } @@ -25,7 +25,7 @@ object RecMeta { case None => r.meta match { case Some(m) => m.getOrElse("meetingName", "unknown") - case None => "unknown" + case None => "unknown" } } } @@ -67,7 +67,7 @@ object RecMeta { if (breakoutElem.isEmpty) { Vector() } else { - breakoutElem map( n => n.text) toVector + breakoutElem map (n => n.text) toVector } } } @@ -149,9 +149,9 @@ object RecMeta { val breakout = getBreakout(metaXml) val breakoutRooms = getBreakoutRooms(metaXml) - val meetingId = meeting match { + val meetingId = meeting match { case Some(m) => m.externalId - case None => id + case None => id } val meetingName = meeting match { @@ -159,13 +159,13 @@ object RecMeta { case None => meta match { case Some(m) => m.getOrElse("meetingName", "unknown") - case None => "unknown" + case None => "unknown" } } val internalMeetingId = meeting match { case Some(m) => Some(m.id) - case None => None + case None => None } val isBreakout = meeting match { @@ -173,7 +173,7 @@ object RecMeta { case None => meta match { case Some(m) => m.getOrElse("isBreakout", "false").toString.toBoolean - case None => "false".toString.toBoolean + case None => "false".toString.toBoolean } } @@ -183,7 +183,7 @@ object RecMeta { } } -case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[ String], +case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[String], meetingName: String, state: String, published: Boolean, startTime: Long, endTime: Long, participants: Int, rawSize: Long, isBreakout: Boolean, meeting: Option[RecMetaMeeting], meta: Option[collection.immutable.Map[String, String]], playback: Option[RecMetaPlayback], @@ -191,7 +191,7 @@ case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[ Str def setState(state: String): RecMeta = this.copy(state = state) def setPublished(publish: Boolean): RecMeta = this.copy(published = publish) - def getRecMeta():java.util.Map[String, String] = { + def getRecMeta(): java.util.Map[String, String] = { meta match { case Some(m) => // Send back a mutable map. So convert the immutable map to mutable then convert @@ -212,43 +212,43 @@ case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[ Str def metaToElem(map: scala.collection.immutable.Map[String, String]): Elem = { val buffer = new scala.xml.NodeBuffer - map.foreach {case (key, value) => + map.foreach { case (key, value) => // Need to escape value otherwise loadString would choke. val m = "<" + key + ">" + xml.Utility.escape(value) + "</" + key + ">" buffer += scala.xml.XML.loadString(m) } - <metadata>{buffer}</metadata> + <metadata>{ buffer }</metadata> } def breakoutRoomsToElem(rooms: Vector[String]): Elem = { val buffer = new scala.xml.NodeBuffer - rooms foreach(r => buffer += <breakoutRoom>{r}</breakoutRoom>) + rooms foreach (r => buffer += <breakoutRoom>{ r }</breakoutRoom>) - <breakoutRooms>{buffer}</breakoutRooms> + <breakoutRooms>{ buffer }</breakoutRooms> } - val recordIdElem = <recordID>{id}</recordID> - val meetingIdElem = <meetingID>{meetingId}</meetingID> - val meetingNameElem = <name>{meetingName}</name> + val recordIdElem = <recordID>{ id }</recordID> + val meetingIdElem = <meetingID>{ meetingId }</meetingID> + val meetingNameElem = <name>{ meetingName }</name> val internalId = internalMeetingId match { - case Some(intId) => Some(<internalMeetingID>{intId}</internalMeetingID>) - case None => None + case Some(intId) => Some(<internalMeetingID>{ intId }</internalMeetingID>) + case None => None } - val isBreakoutElem = <isBreakout>{isBreakout}</isBreakout> - val publishedElem = <published>{published}</published> - val stateElem = <state>{state}</state> - val startTimeElem = <startTime>{startTime}</startTime> - val endTimeElem = <endTime>{endTime}</endTime> - val participantsElem = <participants>{participants}</participants> - val rawSizeElem = <rawSize>{rawSize}</rawSize> + val isBreakoutElem = <isBreakout>{ isBreakout }</isBreakout> + val publishedElem = <published>{ published }</published> + val stateElem = <state>{ state }</state> + val startTimeElem = <startTime>{ startTime }</startTime> + val endTimeElem = <endTime>{ endTime }</endTime> + val participantsElem = <participants>{ participants }</participants> + val rawSizeElem = <rawSize>{ rawSize }</rawSize> val buffer = new scala.xml.NodeBuffer buffer += recordIdElem buffer += meetingIdElem - internalId foreach(intId => buffer += intId) + internalId foreach (intId => buffer += intId) buffer += meetingNameElem buffer += isBreakoutElem buffer += publishedElem @@ -263,21 +263,21 @@ case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[ Str if (breakoutRooms.nonEmpty) { buffer += breakoutRoomsToElem(breakoutRooms) } - playback foreach(p => buffer += p.toXml()) + playback foreach (p => buffer += p.toXml()) - dataMetrics foreach(p => buffer += p.toXml()) + dataMetrics foreach (p => buffer += p.toXml()) - <recording>{buffer}</recording> + <recording>{ buffer }</recording> } def toMetadataXml(): Elem = { - val recordIdElem = <id>{id}</id> - val stateElem = <state>{state}</state> - val publishedElem = <published>{published}</published> - val startTimeElem = <start_time>{startTime}</start_time> - val endTimeElem = <end_time>{endTime}</end_time> - val participantsElem = <participants>{participants}</participants> - val rawSizeElem = <raw_size>{rawSize}</raw_size> + val recordIdElem = <id>{ id }</id> + val stateElem = <state>{ state }</state> + val publishedElem = <published>{ published }</published> + val startTimeElem = <start_time>{ startTime }</start_time> + val endTimeElem = <end_time>{ endTime }</end_time> + val participantsElem = <participants>{ participants }</participants> + val rawSizeElem = <raw_size>{ rawSize }</raw_size> val buffer = new scala.xml.NodeBuffer buffer += recordIdElem @@ -295,12 +295,12 @@ case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[ Str def metaToElem(map: scala.collection.immutable.Map[String, String]): Elem = { val buffer = new scala.xml.NodeBuffer - map.foreach {case (key, value) => + map.foreach { case (key, value) => // Need to escape value otherwise loadString would choke. val m = "<" + key + ">" + xml.Utility.escape(value) + "</" + key + ">" buffer += scala.xml.XML.loadString(m) } - <meta>{buffer}</meta> + <meta>{ buffer }</meta> } meta foreach (m => buffer += metaToElem(m)) @@ -309,31 +309,30 @@ case class RecMeta(id: String, meetingId: String, internalMeetingId: Option[ Str def breakoutRoomsToElem(rooms: Vector[String]): Elem = { val buffer = new scala.xml.NodeBuffer - rooms foreach(r => buffer += <breakoutRoom>{r}</breakoutRoom>) + rooms foreach (r => buffer += <breakoutRoom>{ r }</breakoutRoom>) - <breakoutRooms>{buffer}</breakoutRooms> + <breakoutRooms>{ buffer }</breakoutRooms> } if (breakoutRooms.nonEmpty) { buffer += breakoutRoomsToElem(breakoutRooms) } - playback foreach(p => buffer += p.toMetadataXml()) + playback foreach (p => buffer += p.toMetadataXml()) - dataMetrics foreach(p => buffer += p.toMetadataXml()) + dataMetrics foreach (p => buffer += p.toMetadataXml()) - <recording>{buffer}</recording> + <recording>{ buffer }</recording> } } - case class RecMetaMeeting(id: String, externalId: String, name: String, breakout: Boolean) { def toXml(): Elem = { - <meeting id={id} externalId={externalId} name={name} breakout={breakout.toString}/> + <meeting id={ id } externalId={ externalId } name={ name } breakout={ breakout.toString }/> } def toMetadataXml(): Elem = { - <meeting id={id} externalId={externalId} name={name} breakout={breakout.toString}/> + <meeting id={ id } externalId={ externalId } name={ name } breakout={ breakout.toString }/> } } @@ -342,11 +341,11 @@ case class RecMetaPlayback(format: String, link: String, processingTime: Int, def toXml(): Elem = { val buffer = new scala.xml.NodeBuffer - val formatElem = <type>{format}</type> - val urlElem = <url>{link}</url> - val processTimeElem = <processingTime>{processingTime}</processingTime> - val lengthElem = <length>{duration / 60000}</length> - val sizeElem = <size>{size}</size> + val formatElem = <type>{ format }</type> + val urlElem = <url>{ link }</url> + val processTimeElem = <processingTime>{ processingTime }</processingTime> + val lengthElem = <length>{ duration / 60000 }</length> + val sizeElem = <size>{ size }</size> buffer += formatElem buffer += urlElem @@ -354,24 +353,24 @@ case class RecMetaPlayback(format: String, link: String, processingTime: Int, buffer += lengthElem buffer += sizeElem - extensions foreach {ext => - ext.head.child foreach {child => + extensions foreach { ext => + ext.head.child foreach { child => buffer += child } } - <playback><format>{buffer}</format></playback> + <playback><format>{ buffer }</format></playback> } def toMetadataXml(): Elem = { val buffer = new scala.xml.NodeBuffer - val formatElem = <format>{format}</format> - val urlElem = <link>{link}</link> - val processTimeElem = <processing_time>{processingTime}</processing_time> - val lengthElem = <duration>{duration}</duration> - val sizeElem = <size>{size}</size> + val formatElem = <format>{ format }</format> + val urlElem = <link>{ link }</link> + val processTimeElem = <processing_time>{ processingTime }</processing_time> + val lengthElem = <duration>{ duration }</duration> + val sizeElem = <size>{ size }</size> buffer += formatElem buffer += urlElem @@ -379,21 +378,21 @@ case class RecMetaPlayback(format: String, link: String, processingTime: Int, buffer += lengthElem buffer += sizeElem - extensions foreach {ext => + extensions foreach { ext => buffer += ext.head } - <playback>{buffer}</playback> + <playback>{ buffer }</playback> } // Merged playback formats when responding to get recordings API call def toFormatXml(): Elem = { val buffer = new scala.xml.NodeBuffer - val formatElem = <type>{format}</type> - val urlElem = <url>{link}</url> - val processTimeElem = <processingTime>{processingTime}</processingTime> - val lengthElem = <length>{duration / 60000}</length> - val sizeElem = <size>{size}</size> + val formatElem = <type>{ format }</type> + val urlElem = <url>{ link }</url> + val processTimeElem = <processingTime>{ processingTime }</processingTime> + val lengthElem = <length>{ duration / 60000 }</length> + val sizeElem = <size>{ size }</size> buffer += formatElem buffer += urlElem @@ -401,50 +400,49 @@ case class RecMetaPlayback(format: String, link: String, processingTime: Int, buffer += lengthElem buffer += sizeElem - extensions foreach {ext => - ext.head.child foreach {child => + extensions foreach { ext => + ext.head.child foreach { child => buffer += child } } - <format>{buffer}</format> + <format>{ buffer }</format> } } case class RecMetaDataMetrics(format: String, link: String) { def toXml(): Elem = { - val formatElem = <type>{format}</type> - val urlElem = <url>{link}</url> + val formatElem = <type>{ format }</type> + val urlElem = <url>{ link }</url> val buffer = new scala.xml.NodeBuffer buffer += formatElem buffer += urlElem - <data><format>{buffer}</format></data> + <data><format>{ buffer }</format></data> } def toMetadataXml(): Elem = { - val formatElem = <format>{format}</format> - val urlElem = <link>{link}</link> + val formatElem = <format>{ format }</format> + val urlElem = <link>{ link }</link> val buffer = new scala.xml.NodeBuffer buffer += formatElem buffer += urlElem - - <data>{buffer}</data> + <data>{ buffer }</data> } // Merged data formats when responding to get recordings API call def toFormatXml(): Elem = { val buffer = new scala.xml.NodeBuffer - val formatElem = <type>{format}</type> - val urlElem = <url>{link}</url> + val formatElem = <type>{ format }</type> + val urlElem = <url>{ link }</url> buffer += formatElem buffer += urlElem - <format>{buffer}</format> + <format>{ buffer }</format> } } @@ -454,51 +452,52 @@ case class RecMetaBreakout(parentId: String, sequence: Int, freeJoin: Boolean, m def toXml(): Elem = { val buffer = new scala.xml.NodeBuffer - val parentIdElem = <parentId>{parentId}</parentId> - val sequenceElem = <sequence>{sequence}</sequence> - val freeJoinElem = <freeJoin>{freeJoin}</freeJoin> + val parentIdElem = <parentId>{ parentId }</parentId> + val sequenceElem = <sequence>{ sequence }</sequence> + val freeJoinElem = <freeJoin>{ freeJoin }</freeJoin> buffer += parentIdElem buffer += sequenceElem buffer += freeJoinElem - <breakout>{buffer}</breakout> + <breakout>{ buffer }</breakout> } def toMetadataXml(): Elem = { - <breakout parentMeetingId={parentId} sequence={sequence.toString} meetingId={meetingId}/> + <breakout parentMeetingId={ parentId } sequence={ sequence.toString } meetingId={ meetingId }/> } } // A simple mask to merge multiple playback formats of the same recording case class RecMetaResponse( - id: String, - meetingId: String, + id: String, + meetingId: String, internalMeetingId: Option[String], - meetingName: String, - state: String, - published: Boolean, - startTime: Long, - endTime: Long, - participants: Int, - rawSize: Long, - isBreakout: Boolean, - meeting: Option[RecMetaMeeting], - meta: Option[collection.immutable.Map[String, String]], - playbacks: ListBuffer[RecMetaPlayback], - data: ListBuffer[RecMetaDataMetrics], - breakout: Option[RecMetaBreakout], - breakoutRooms: Vector[String]) { + meetingName: String, + state: String, + published: Boolean, + startTime: Long, + endTime: Long, + participants: Int, + rawSize: Long, + isBreakout: Boolean, + meeting: Option[RecMetaMeeting], + meta: Option[collection.immutable.Map[String, String]], + playbacks: ListBuffer[RecMetaPlayback], + data: ListBuffer[RecMetaDataMetrics], + breakout: Option[RecMetaBreakout], + breakoutRooms: Vector[String] +) { // Link a new playback if it exists def updateRecMeta(r: RecMeta): RecMetaResponse = { r.playback match { case Some(p) => this.playbacks += p - case None => + case None => } r.dataMetrics match { case Some(p) => this.data += p - case None => + case None => } this } @@ -506,41 +505,41 @@ case class RecMetaResponse( def toXml(): Elem = { def metaToElem(map: scala.collection.immutable.Map[String, String]): Elem = { val buffer = new scala.xml.NodeBuffer - map.foreach {case (key, value) => + map.foreach { case (key, value) => // Need to escape value otherwise loadString would choke. val m = "<" + key + ">" + xml.Utility.escape(value) + "</" + key + ">" buffer += scala.xml.XML.loadString(m) } - <metadata>{buffer}</metadata> + <metadata>{ buffer }</metadata> } def breakoutRoomsToElem(rooms: Vector[String]): Elem = { val buffer = new scala.xml.NodeBuffer - rooms foreach(r => buffer += <breakoutRoom>{r}</breakoutRoom>) - <breakoutRooms>{buffer}</breakoutRooms> + rooms foreach (r => buffer += <breakoutRoom>{ r }</breakoutRoom>) + <breakoutRooms>{ buffer }</breakoutRooms> } - val recordIdElem = <recordID>{id}</recordID> - val meetingIdElem = <meetingID>{meetingId}</meetingID> - val meetingNameElem = <name>{meetingName}</name> + val recordIdElem = <recordID>{ id }</recordID> + val meetingIdElem = <meetingID>{ meetingId }</meetingID> + val meetingNameElem = <name>{ meetingName }</name> val internalId = internalMeetingId match { - case Some(intId) => Some(<internalMeetingID>{intId}</internalMeetingID>) - case None => None + case Some(intId) => Some(<internalMeetingID>{ intId }</internalMeetingID>) + case None => None } - val isBreakoutElem = <isBreakout>{isBreakout}</isBreakout> - val publishedElem = <published>{published}</published> - val stateElem = <state>{state}</state> - val startTimeElem = <startTime>{startTime}</startTime> - val endTimeElem = <endTime>{endTime}</endTime> - val participantsElem = <participants>{participants}</participants> - val rawSizeElem = <rawSize>{rawSize}</rawSize> + val isBreakoutElem = <isBreakout>{ isBreakout }</isBreakout> + val publishedElem = <published>{ published }</published> + val stateElem = <state>{ state }</state> + val startTimeElem = <startTime>{ startTime }</startTime> + val endTimeElem = <endTime>{ endTime }</endTime> + val participantsElem = <participants>{ participants }</participants> + val rawSizeElem = <rawSize>{ rawSize }</rawSize> val buffer = new scala.xml.NodeBuffer buffer += recordIdElem buffer += meetingIdElem - internalId foreach(intId => buffer += intId) + internalId foreach (intId => buffer += intId) buffer += meetingNameElem buffer += isBreakoutElem buffer += publishedElem @@ -559,21 +558,21 @@ case class RecMetaResponse( // Iterate over all formats before include the playback tag val formats = new scala.xml.NodeBuffer var size = 0L - playbacks foreach(p => { + playbacks foreach (p => { size += p.size formats += p.toFormatXml() }) - val sizeElem = <size>{size}</size> + val sizeElem = <size>{ size }</size> buffer += sizeElem - val playbackElem = <playback>{formats}</playback> + val playbackElem = <playback>{ formats }</playback> buffer += playbackElem // Iterate over all formats before include the data tag val dataFormats = new scala.xml.NodeBuffer - data foreach(p => dataFormats += p.toFormatXml()) - val dataFormatElem = <data>{dataFormats}</data> + data foreach (p => dataFormats += p.toFormatXml()) + val dataFormatElem = <data>{ dataFormats }</data> buffer += dataFormatElem - <recording>{buffer}</recording> + <recording>{ buffer }</recording> } } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/TextTracks.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/TextTracks.scala index ad1e4e3a65b5fd8b7e090099c04837ef330efed7..cb337dc63ca0443abdbb99a1ffcb961d31a1878b 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/TextTracks.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/domain/TextTracks.scala @@ -4,33 +4,45 @@ import java.io.File import java.util case class CaptionsDirPaths(captionsDir: String, inboxDir: String, statusDir: String) -case class UploadedTrack(recordId: String, - kind: String, - lang: String, - label: String, - origFilename: String, - track: File, - trackId: String, - inboxDir: String) -case class UploadedTrackInfo(recordId: String, - kind: String, - lang: String, - label: String, - origFilename: String) -case class Track(kind: String, - lang: String, - label: String, - source: String, - href: String) -case class GetRecTextTracksResult(returncode: String, - tracks: util.ArrayList[Track]) +case class UploadedTrack( + recordId: String, + kind: String, + lang: String, + label: String, + origFilename: String, + track: File, + trackId: String, + inboxDir: String +) +case class UploadedTrackInfo( + recordId: String, + kind: String, + lang: String, + label: String, + origFilename: String +) +case class Track( + kind: String, + lang: String, + label: String, + source: String, + href: String +) +case class GetRecTextTracksResult( + returncode: String, + tracks: util.ArrayList[Track] +) case class GetRecTextTracksResp(response: GetRecTextTracksResult) -case class GetRecTextTracksResultFailed(returncode: String, - messageKey: String, - message: String) +case class GetRecTextTracksResultFailed( + returncode: String, + messageKey: String, + message: String +) case class GetRecTextTracksRespFailed(response: GetRecTextTracksResultFailed) -case class PutRecTextTrackResult(returncode: String, - recordId: String, - messageKey: String, - message: String) +case class PutRecTextTrackResult( + returncode: String, + recordId: String, + messageKey: String, + message: String +) case class PutRecTextTrackResp(response: PutRecTextTrackResult) \ No newline at end of file diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala index bcb2e4b3d26ebbe6d7d9b7573849162364e3f35b..51b5b0ac15c48a940f87c16bd18af335b2b261f7 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala @@ -18,14 +18,16 @@ object WebRedisSubscriberActor extends RedisSubscriber with RedisConfiguration { classOf[WebRedisSubscriberActor], system, jsonMsgBus, oldMessageEventBus, redisHost, redisPort, - channels, patterns).withDispatcher("akka.redis-subscriber-worker-dispatcher") + channels, patterns + ).withDispatcher("akka.redis-subscriber-worker-dispatcher") } class WebRedisSubscriberActor( - system: ActorSystem, - jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEventBus: OldMessageEventBus, redisHost: String, - redisPort: Int, - channels: Seq[String] = Nil, patterns: Seq[String] = Nil) + system: ActorSystem, + jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEventBus: OldMessageEventBus, redisHost: String, + redisPort: Int, + channels: Seq[String] = Nil, patterns: Seq[String] = Nil +) extends RedisSubscriberProvider(system, "BbbWebSub", channels, patterns, null) with SystemConfiguration { override def addListener(appChannel: String) { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/Meeting.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/Meeting.scala index c4347a987caa6ed50f2eecff58ad76f04be786eb..9df76844fb1838b3f224dbf04b7acea8e9103d22 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/Meeting.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/Meeting.scala @@ -1,4 +1,3 @@ package org.bigbluebutton.api2.meeting - case class Meeting() diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManager.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManager.scala index d3db4c640f0ab27ad43b6da8ea6db7b884115b85..2d0f0c7b94f388917832e906552a602a4a7d1a96 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManager.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManager.scala @@ -2,7 +2,6 @@ package org.bigbluebutton.api2.meeting import org.bigbluebutton.common2.domain.DefaultProps - object MeetingsManager { def create(mgr: MeetingsManager, defaultProps: DefaultProps): RunningMeeting = { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManagerActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManagerActor.scala index 9f4f2cb59af2009936cc911d95e6ebc6e7761255..7453561ff171e8af726be0b97e4340574eb4df51 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManagerActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/MeetingsManagerActor.scala @@ -1,11 +1,11 @@ package org.bigbluebutton.api2.meeting -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{ Actor, ActorLogging, Props } import org.bigbluebutton.api.domain.UserSession import org.bigbluebutton.api2.bus.MsgToAkkaAppsEventBus import org.bigbluebutton.common2.domain.DefaultProps import org.bigbluebutton.api2.util.Util2 -import org.bigbluebutton.common2.msgs.{BbbCommonEnvCoreMsg, MeetingCreatedEvtMsg} +import org.bigbluebutton.common2.msgs.{ BbbCommonEnvCoreMsg, MeetingCreatedEvtMsg } sealed trait ApiMsg case class CreateBreakoutRoomMsg(meetingId: String, parentMeetingId: String, @@ -19,11 +19,8 @@ case class RegisterUser(meetingId: String, intUserId: String, name: String, role extUserId: String, authToken: String, avatarURL: String, guest: Boolean, authed: Boolean, guestStatus: String) - case class CreateMeetingMsg(defaultProps: DefaultProps) - - object MeetingsManagerActor { def props(msgToAkkaAppsEventBus: MsgToAkkaAppsEventBus): Props = Props(classOf[MeetingsManagerActor], msgToAkkaAppsEventBus) @@ -31,14 +28,14 @@ object MeetingsManagerActor { class MeetingsManagerActor(val msgToAkkaAppsEventBus: MsgToAkkaAppsEventBus) extends Actor with ActorLogging - with ToAkkaAppsSendersTrait - with FromAkkaAppsHandlersTrait { + with ToAkkaAppsSendersTrait + with FromAkkaAppsHandlersTrait { private val manager = new MeetingsManager def receive = { - case msg: CreateMeetingMsg => handleCreateMeeting(msg) - case msg: RegisterUser => handleRegisterUser(msg) + case msg: CreateMeetingMsg => handleCreateMeeting(msg) + case msg: RegisterUser => handleRegisterUser(msg) case msg: BbbCommonEnvCoreMsg => handleBbbCommonEnvCoreMsg(msg) } @@ -50,7 +47,8 @@ class MeetingsManagerActor(val msgToAkkaAppsEventBus: MsgToAkkaAppsEventBus) } yield { MeetingsManager.findMeetingThatStartsWith(manager, mid) match { case Some(m) => replyWithDuplicateMeeting(msg) - case None => createNewMeeting(msg) + case None => + createNewMeeting(msg) log.debug("Received create meeting request for {} {} ", msg.defaultProps.meetingProp.intId, msg.defaultProps.meetingProp.name) sendCreateMeetingRequestToAkkaApps(msg.defaultProps) @@ -59,8 +57,6 @@ class MeetingsManagerActor(val msgToAkkaAppsEventBus: MsgToAkkaAppsEventBus) } } - - def replyWithDuplicateMeeting(msg: CreateMeetingMsg): Unit = { log.warning("Duplicate create meeting request for {} {} ", msg.defaultProps.meetingProp.intId, msg.defaultProps.meetingProp.name) @@ -81,7 +77,7 @@ class MeetingsManagerActor(val msgToAkkaAppsEventBus: MsgToAkkaAppsEventBus) private def handleBbbCommonEnvCoreMsg(msg: BbbCommonEnvCoreMsg): Unit = { msg.core match { case m: MeetingCreatedEvtMsg => handleMeetingCreatedEvtMsg(m) - case _ => log.error("***** Cannot handle " + msg.envelope.name) + case _ => log.error("***** Cannot handle " + msg.envelope.name) } } } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/OldMeetingMsgHdlrActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/OldMeetingMsgHdlrActor.scala index 7a7e376c2e54752cb54cf471e3d4bbcef9dae322..baeca4628198cec45d65626839d6a0dac271a8ec 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/OldMeetingMsgHdlrActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/OldMeetingMsgHdlrActor.scala @@ -2,12 +2,11 @@ package org.bigbluebutton.api2.meeting import java.util -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{ Actor, ActorLogging, Props } import org.bigbluebutton.api.messaging.messages._ import org.bigbluebutton.api2.bus.OldMessageReceivedGW import org.bigbluebutton.common2.msgs._ - object OldMeetingMsgHdlrActor { def props(olgMsgGW: OldMessageReceivedGW): Props = Props(classOf[OldMeetingMsgHdlrActor], olgMsgGW) @@ -16,35 +15,34 @@ object OldMeetingMsgHdlrActor { class OldMeetingMsgHdlrActor(val olgMsgGW: OldMessageReceivedGW) extends Actor with ActorLogging { - def receive = { case msg: BbbCommonEnvCoreMsg => handleBbbCommonEnvCoreMsg(msg) } private def handleBbbCommonEnvCoreMsg(msg: BbbCommonEnvCoreMsg): Unit = { msg.core match { - case m: MeetingCreatedEvtMsg => handleMeetingCreatedEvtMsg(m) - case m: MeetingEndedEvtMsg => handleMeetingEndedEvtMsg(m) - case m: MeetingDestroyedEvtMsg => handleMeetingDestroyedEvtMsg(m) - case m: CheckAlivePongSysMsg => handleCheckAlivePongSysMsg(m) - case m: UserEmojiChangedEvtMsg => handleUserEmojiChangedEvtMsg(m) - case m: PresenterUnassignedEvtMsg => handlePresenterUnassignedEvtMsg(m) - case m: PresenterAssignedEvtMsg => handlePresenterAssignedEvtMsg(m) - case m: UserJoinedMeetingEvtMsg => handleUserJoinedMeetingEvtMsg(m) - case m: UserLeftMeetingEvtMsg => handleUserLeftMeetingEvtMsg(m) + case m: MeetingCreatedEvtMsg => handleMeetingCreatedEvtMsg(m) + case m: MeetingEndedEvtMsg => handleMeetingEndedEvtMsg(m) + case m: MeetingDestroyedEvtMsg => handleMeetingDestroyedEvtMsg(m) + case m: CheckAlivePongSysMsg => handleCheckAlivePongSysMsg(m) + case m: UserEmojiChangedEvtMsg => handleUserEmojiChangedEvtMsg(m) + case m: PresenterUnassignedEvtMsg => handlePresenterUnassignedEvtMsg(m) + case m: PresenterAssignedEvtMsg => handlePresenterAssignedEvtMsg(m) + case m: UserJoinedMeetingEvtMsg => handleUserJoinedMeetingEvtMsg(m) + case m: UserLeftMeetingEvtMsg => handleUserLeftMeetingEvtMsg(m) case m: UserJoinedVoiceConfToClientEvtMsg => handleUserJoinedVoiceConfToClientEvtMsg(m) - case m: UserLeftVoiceConfToClientEvtMsg => handleUserLeftVoiceConfToClientEvtMsg(m) - case m: UserRoleChangedEvtMsg => handleUserRoleChangedEvtMsg(m) - case m: UserBroadcastCamStartedEvtMsg => handleUserBroadcastCamStartedEvtMsg(m) - case m: UserBroadcastCamStoppedEvtMsg => handleUserBroadcastCamStoppedEvtMsg(m) - case m: CreateBreakoutRoomSysCmdMsg => handleCreateBreakoutRoomSysCmdMsg(m) - case m: PresentationUploadTokenSysPubMsg => handlePresentationUploadTokenSysPubMsg(m) - case m: GuestsWaitingApprovedEvtMsg => handleGuestsWaitingApprovedEvtMsg(m) - case m: GuestPolicyChangedEvtMsg => handleGuestPolicyChangedEvtMsg(m) - case m: RecordingChapterBreakSysMsg => handleRecordingChapterBreakSysMsg(m) + case m: UserLeftVoiceConfToClientEvtMsg => handleUserLeftVoiceConfToClientEvtMsg(m) + case m: UserRoleChangedEvtMsg => handleUserRoleChangedEvtMsg(m) + case m: UserBroadcastCamStartedEvtMsg => handleUserBroadcastCamStartedEvtMsg(m) + case m: UserBroadcastCamStoppedEvtMsg => handleUserBroadcastCamStoppedEvtMsg(m) + case m: CreateBreakoutRoomSysCmdMsg => handleCreateBreakoutRoomSysCmdMsg(m) + case m: PresentationUploadTokenSysPubMsg => handlePresentationUploadTokenSysPubMsg(m) + case m: GuestsWaitingApprovedEvtMsg => handleGuestsWaitingApprovedEvtMsg(m) + case m: GuestPolicyChangedEvtMsg => handleGuestPolicyChangedEvtMsg(m) + case m: RecordingChapterBreakSysMsg => handleRecordingChapterBreakSysMsg(m) case m: SetPresentationDownloadableEvtMsg => handleSetPresentationDownloadableEvtMsg(m) - case m: RecordingStatusChangedEvtMsg => handleRecordingStatusChangedEvtMsg(m) - case _ => log.error("***** Cannot handle " + msg.envelope.name) + case m: RecordingStatusChangedEvtMsg => handleRecordingStatusChangedEvtMsg(m) + case _ => log.error("***** Cannot handle " + msg.envelope.name) } } @@ -70,23 +68,23 @@ class OldMeetingMsgHdlrActor(val olgMsgGW: OldMessageReceivedGW) def handleCreateBreakoutRoomSysCmdMsg(msg: CreateBreakoutRoomSysCmdMsg): Unit = { olgMsgGW.handle(new CreateBreakoutRoom( - msg.body.room.breakoutMeetingId, - msg.body.room.parentId, - msg.body.room.name, - msg.body.room.sequence, - msg.body.room.freeJoin, - msg.body.room.dialNumber, - msg.body.room.voiceConfId, - msg.body.room.viewerPassword, - msg.body.room.moderatorPassword, - msg.body.room.durationInMinutes, - msg.body.room.sourcePresentationId, - msg.body.room.sourcePresentationSlide, - msg.body.room.record - )) - - } - + msg.body.room.breakoutMeetingId, + msg.body.room.parentId, + msg.body.room.name, + msg.body.room.sequence, + msg.body.room.freeJoin, + msg.body.room.dialNumber, + msg.body.room.voiceConfId, + msg.body.room.viewerPassword, + msg.body.room.moderatorPassword, + msg.body.room.durationInMinutes, + msg.body.room.sourcePresentationId, + msg.body.room.sourcePresentationSlide, + msg.body.room.record + )) + + } + def handleRecordingStatusChangedEvtMsg(msg: RecordingStatusChangedEvtMsg): Unit = { olgMsgGW.handle(new UpdateRecordingStatus(msg.header.meetingId, msg.body.recording)); } @@ -112,7 +110,7 @@ class OldMeetingMsgHdlrActor(val olgMsgGW: OldMessageReceivedGW) } def handleUserEmojiChangedEvtMsg(msg: UserEmojiChangedEvtMsg): Unit = { - //listener.handle(new UserStatusChanged(meetingId, userid, status, value)) + //listener.handle(new UserStatusChanged(meetingId, userid, status, value)) } def handleUserLeftMeetingEvtMsg(msg: UserLeftMeetingEvtMsg): Unit = { @@ -138,13 +136,13 @@ class OldMeetingMsgHdlrActor(val olgMsgGW: OldMessageReceivedGW) def handleUserBroadcastCamStoppedEvtMsg(msg: UserBroadcastCamStoppedEvtMsg): Unit = { olgMsgGW.handle(new UserUnsharedWebcam(msg.header.meetingId, msg.body.userId, msg.body.stream)) } - + def handleUserRoleChangedEvtMsg(msg: UserRoleChangedEvtMsg): Unit = { olgMsgGW.handle(new UserRoleChanged(msg.header.meetingId, msg.body.userId, msg.body.role)) } def handlePresentationUploadTokenSysPubMsg(msg: PresentationUploadTokenSysPubMsg): Unit = { - olgMsgGW.handle(new PresentationUploadToken(msg.body.podId, msg.body.authzToken, msg.body.filename)) + olgMsgGW.handle(new PresentationUploadToken(msg.body.podId, msg.body.authzToken, msg.body.filename)) } def handleGuestsWaitingApprovedEvtMsg(msg: GuestsWaitingApprovedEvtMsg): Unit = { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/ToAkkaAppsSendersTrait.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/ToAkkaAppsSendersTrait.scala index 1235c3802b37a5eb21f287a765e43434adec2934..580045fb8f6d82b0c30d320569e2546e1c977e95 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/ToAkkaAppsSendersTrait.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/ToAkkaAppsSendersTrait.scala @@ -1,7 +1,7 @@ package org.bigbluebutton.api2.meeting import org.bigbluebutton.api2.SystemConfiguration -import org.bigbluebutton.api2.bus.{MsgToAkkaApps, MsgToAkkaAppsEventBus} +import org.bigbluebutton.api2.bus.{ MsgToAkkaApps, MsgToAkkaAppsEventBus } import org.bigbluebutton.common2.domain.DefaultProps import org.bigbluebutton.common2.msgs._ diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/UserSessions.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/UserSessions.scala index 563d7758e410aa2a3a16e65c48205872ee70e407..f2c6976b354cc25cb06b41810381018907f7072c 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/UserSessions.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/meeting/UserSessions.scala @@ -1,12 +1,11 @@ package org.bigbluebutton.api2.meeting - case class UserSession2(authToken: String, internalUserId: String, conferencename: String, -meetingID: String, externMeetingID: String, externUserID: String, fullname: String, -role: String, conference: String, room: String, guest: Boolean = false, -authed: Boolean = false, voicebridge: String, webvoiceconf: String, -mode: String, record: String, welcome: String, logoutUrl: String, -defaultLayout: String = "NOLAYOUT", avatarURL: String, configXML: String) + meetingID: String, externMeetingID: String, externUserID: String, fullname: String, + role: String, conference: String, room: String, guest: Boolean = false, + authed: Boolean = false, voicebridge: String, webvoiceconf: String, + mode: String, record: String, welcome: String, logoutUrl: String, + defaultLayout: String = "NOLAYOUT", avatarURL: String, configXML: String) class UserSessions { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/LogHelper.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/LogHelper.scala index a8c36b82660ca63c05d6b5752e87ae2eb170872a..598e698ff83a12becbe0ef3d4008cfc58d319bb7 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/LogHelper.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/LogHelper.scala @@ -3,9 +3,9 @@ package org.bigbluebutton.api2.util import org.slf4j.LoggerFactory /** - * LogHelper is a trait you can mix in to provide easy log4j logging - * for your scala classes. - **/ + * LogHelper is a trait you can mix in to provide easy log4j logging + * for your scala classes. + */ trait LogHelper { val loggerName = this.getClass.getName lazy val logger = LoggerFactory.getLogger(this.getClass) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/RecMetaXmlHelper.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/RecMetaXmlHelper.scala index e81e0c743cc78f94fb082ce485834e9ca4e1dbe7..6b078329a4eb14a269ee086ceb6f2ce8cb897701 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/RecMetaXmlHelper.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/RecMetaXmlHelper.scala @@ -1,6 +1,6 @@ package org.bigbluebutton.api2.util -import java.io.{File, FileOutputStream, FileWriter, IOException} +import java.io.{ File, FileOutputStream, FileWriter, IOException } import java.nio.channels.Channels import java.nio.charset.StandardCharsets import java.util @@ -10,9 +10,9 @@ import org.bigbluebutton.api.domain.RecordingMetadata import org.bigbluebutton.api2.RecordingServiceGW import org.bigbluebutton.api2.domain._ -import scala.xml.{Elem, PrettyPrinter, XML} +import scala.xml.{ Elem, PrettyPrinter, XML } import scala.collection.JavaConverters._ -import scala.collection.mutable.{Buffer, ListBuffer, Map} +import scala.collection.mutable.{ Buffer, ListBuffer, Map } import scala.collection.Iterable import java.io.IOException @@ -109,29 +109,29 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { // Translate a RecMeta to a RecMetaResponse def createRecMetaResponse(recMeta: RecMeta): RecMetaResponse = { val recMetaResponse = new RecMetaResponse( - recMeta.id, - recMeta.meetingId, - recMeta.internalMeetingId, - recMeta.meetingName, - recMeta.state, - recMeta.published, - recMeta.startTime, - recMeta.endTime, - recMeta.participants, - recMeta.rawSize, - recMeta.isBreakout, - recMeta.meeting, - recMeta.meta, - recMeta.playback match { - case Some(p) => ListBuffer(p) - case None => ListBuffer() - }, - recMeta.dataMetrics match { - case Some(p) => ListBuffer(p) - case None => ListBuffer() - }, - recMeta.breakout, - recMeta.breakoutRooms + recMeta.id, + recMeta.meetingId, + recMeta.internalMeetingId, + recMeta.meetingName, + recMeta.state, + recMeta.published, + recMeta.startTime, + recMeta.endTime, + recMeta.participants, + recMeta.rawSize, + recMeta.isBreakout, + recMeta.meeting, + recMeta.meta, + recMeta.playback match { + case Some(p) => ListBuffer(p) + case None => ListBuffer() + }, + recMeta.dataMetrics match { + case Some(p) => ListBuffer(p) + case None => ListBuffer() + }, + recMeta.breakout, + recMeta.breakoutRooms ) recMetaResponse } @@ -142,13 +142,13 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { recMeta foreach { rm => resp(rm.id) = resp.get(rm.id) match { case Some(recMetaResponse) => recMetaResponse.updateRecMeta(rm) - case None => createRecMetaResponse(rm) + case None => createRecMetaResponse(rm) } } resp.values } - val recMeta = recs.asScala map(r => r.getRecMeta) + val recMeta = recs.asScala map (r => r.getRecMeta) if (recMeta.isEmpty) { val resp = <response> @@ -167,7 +167,7 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { val resp = <response> <returncode>SUCCESS</returncode> - <recordings>{buffer}</recordings> + <recordings>{ buffer }</recordings> </response> resp.toString } @@ -188,31 +188,31 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { } } - def getRecordingTextTracks(recordId: String, captionsDir: String):String = { - val gson = new Gson() - var returnResponse:String = "" - val captionsFilePath = captionsDir + File.separatorChar + recordId + File.separatorChar + CAPTIONS_FILE + def getRecordingTextTracks(recordId: String, captionsDir: String): String = { + val gson = new Gson() + var returnResponse: String = "" + val captionsFilePath = captionsDir + File.separatorChar + recordId + File.separatorChar + CAPTIONS_FILE - readCaptionJsonFile(captionsFilePath, StandardCharsets.UTF_8) match { - case Some(captions) => - val ctracks = gson.fromJson(captions, classOf[util.ArrayList[Track]]) - val result1 = GetRecTextTracksResult(SUCCESS, ctracks) - val response1 = GetRecTextTracksResp(result1) - val respText1 = gson.toJson(response1) + readCaptionJsonFile(captionsFilePath, StandardCharsets.UTF_8) match { + case Some(captions) => + val ctracks = gson.fromJson(captions, classOf[util.ArrayList[Track]]) + val result1 = GetRecTextTracksResult(SUCCESS, ctracks) + val response1 = GetRecTextTracksResp(result1) + val respText1 = gson.toJson(response1) - returnResponse = respText1 - case None => - val resFailed = GetRecTextTracksResultFailed(FAILED, "noCaptionsFound", "No captions found for " + recordId) - val respFailed = GetRecTextTracksRespFailed(resFailed) - val failedTxt = gson.toJson(respFailed) + returnResponse = respText1 + case None => + val resFailed = GetRecTextTracksResultFailed(FAILED, "noCaptionsFound", "No captions found for " + recordId) + val respFailed = GetRecTextTracksRespFailed(resFailed) + val failedTxt = gson.toJson(respFailed) - returnResponse = failedTxt - } + returnResponse = failedTxt + } - returnResponse - } + returnResponse + } - def saveCaptionsFile(captionsDir:String, captionsTracks: String):Boolean = { + def saveCaptionsFile(captionsDir: String, captionsTracks: String): Boolean = { val path = captionsDir + File.separatorChar + CAPTIONS_FILE val fileWriter = new FileWriter(path) try { @@ -232,55 +232,60 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { } } + def saveTrackInfoFile(trackInfoJson: String, trackInfoFilePath: String): Boolean = { + var result = false + val fileWriter = new FileWriter(trackInfoFilePath) + try { + fileWriter.write(trackInfoJson) + result = true + } catch { + case ioe: IOException => + logger.info("Failed to write caption.json {}", trackInfoFilePath) + result = false + case ex: Exception => + logger.info("Exception while writing {}", trackInfoFilePath) + logger.info("Exception details: {}", ex.getMessage) + result = false + } finally { + fileWriter.flush() + fileWriter.close() + } - def saveTrackInfoFile(trackInfoJson:String, trackInfoFilePath: String):Boolean = { - var result = false - val fileWriter = new FileWriter(trackInfoFilePath) - try { - fileWriter.write(trackInfoJson) - result = true - } catch { - case ioe: IOException => - logger.info("Failed to write caption.json {}", trackInfoFilePath) - result = false - case ex: Exception => - logger.info("Exception while writing {}", trackInfoFilePath) - logger.info("Exception details: {}", ex.getMessage) - result = false - } finally { - fileWriter.flush() - fileWriter.close() - } - - result - } + result + } - def putRecordingTextTrack(track: UploadedTrack):String = { - val trackInfoFilePath = track.inboxDir + File.separatorChar + track.trackId + "-track.json" + def putRecordingTextTrack(track: UploadedTrack): String = { + val trackInfoFilePath = track.inboxDir + File.separatorChar + track.trackId + "-track.json" - val trackInfo = new UploadedTrackInfo(recordId = track.recordId, - kind = track.kind, - lang = track.lang, - label = track.label, - origFilename = track.origFilename) + val trackInfo = new UploadedTrackInfo( + recordId = track.recordId, + kind = track.kind, + lang = track.lang, + label = track.label, + origFilename = track.origFilename + ) - val gson = new Gson() - val trackInfoJson = gson.toJson(trackInfo) - val success = saveTrackInfoFile(trackInfoJson, trackInfoFilePath) - if (success) { - val result = PutRecTextTrackResult(SUCCESS, - track.recordId, - messageKey = "upload_text_track_success", - message = "Text track uploaded successfully") - val resp = PutRecTextTrackResp(result) - gson.toJson(resp) - } else { - val result = PutRecTextTrackResult(FAILED, - track.recordId, - messageKey = "upload_text_track_failed", - message = "Text track upload failed.") - val resp = PutRecTextTrackResp(result) - gson.toJson(resp) - } - } + val gson = new Gson() + val trackInfoJson = gson.toJson(trackInfo) + val success = saveTrackInfoFile(trackInfoJson, trackInfoFilePath) + if (success) { + val result = PutRecTextTrackResult( + SUCCESS, + track.recordId, + messageKey = "upload_text_track_success", + message = "Text track uploaded successfully" + ) + val resp = PutRecTextTrackResp(result) + gson.toJson(resp) + } else { + val result = PutRecTextTrackResult( + FAILED, + track.recordId, + messageKey = "upload_text_track_failed", + message = "Text track upload failed." + ) + val resp = PutRecTextTrackResp(result) + gson.toJson(resp) + } + } } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/Util2.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/Util2.scala index 76b24e07a709844f7ae88ce514ce4c1333cfd832..76f2fdaa2d71c7fd0a73237fc69da50d5888fedf 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/Util2.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/util/Util2.scala @@ -2,7 +2,6 @@ package org.bigbluebutton.api2.util import org.apache.commons.lang3.StringUtils - object Util2 { def getFirstPartOfMeetingId(meetingId: String): Option[String] = { val segments: Array[String] = StringUtils.split(meetingId, "-")