diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala index 02fa08817044243ee197b0231ca3cd8b15614d14..08e8c38735cf9a9d1f36ddb575129f30b2de0d6b 100755 --- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala @@ -151,3 +151,15 @@ case class ValidateConnAuthTokenSysRespMsg(header: BbbCoreHeaderWithMeetingId, body: ValidateConnAuthTokenSysRespMsgBody) extends BbbCoreMsg case class ValidateConnAuthTokenSysRespMsgBody(meetingId: String, userId: String, connId: String, authzed: Boolean, app: String) + +object PublishedRecordingSysMsg { val NAME = "PublishedRecordingSysMsg" } +case class PublishedRecordingSysMsg(header: BbbCoreBaseHeader, body: PublishedRecordingSysMsgBody) extends BbbCoreMsg +case class PublishedRecordingSysMsgBody(recordId: String) + +object UnpublishedRecordingSysMsg { val NAME = "UnpublishedRecordingSysMsg" } +case class UnpublishedRecordingSysMsg(header: BbbCoreBaseHeader, body: UnpublishedRecordingSysMsgBody) extends BbbCoreMsg +case class UnpublishedRecordingSysMsgBody(recordId: String) + +object DeletedRecordingSysMsg { val NAME = "DeletedRecordingSysMsg" } +case class DeletedRecordingSysMsg(header: BbbCoreBaseHeader, body: DeletedRecordingSysMsgBody) extends BbbCoreMsg +case class DeletedRecordingSysMsgBody(recordId: String) diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala index 8dcfd16ff578dc24aa0049318a72e050b8344881..643e847a395fb9a48cf628e8121beedd298ccbf1 100644 --- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala @@ -22,4 +22,6 @@ trait RedisConfiguration { lazy val fromAkkaAppsWbRedisChannel = Try(config.getString("redis.fromAkkaAppsWbRedisChannel")).getOrElse("from-akka-apps-wb-redis-channel") lazy val fromAkkaAppsChatRedisChannel = Try(config.getString("redis.fromAkkaAppsChatRedisChannel")).getOrElse("from-akka-apps-chat-redis-channel") lazy val fromAkkaAppsPresRedisChannel = Try(config.getString("redis.fromAkkaAppsPresRedisChannel")).getOrElse("from-akka-apps-pres-redis-channel") + + lazy val fromBbbWebRedisChannel = Try(config.getString("redis.fromBbbWebRedisChannel")).getOrElse("from-bbb-web-redis-channel") } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java index 825d0deea84dd58dc6a186cf6ab21bc84c37c299..0865d49710673d57f12eb10b30963f1380f6adc3 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java @@ -50,6 +50,9 @@ import org.bigbluebutton.api.domain.UserSession; import org.bigbluebutton.api.messaging.MessageListener; import org.bigbluebutton.api.messaging.converters.messages.DestroyMeetingMessage; import org.bigbluebutton.api.messaging.converters.messages.EndMeetingMessage; +import org.bigbluebutton.api.messaging.converters.messages.PublishedRecordingMessage; +import org.bigbluebutton.api.messaging.converters.messages.UnpublishedRecordingMessage; +import org.bigbluebutton.api.messaging.converters.messages.DeletedRecordingMessage; import org.bigbluebutton.api.messaging.messages.CreateBreakoutRoom; import org.bigbluebutton.api.messaging.messages.CreateMeeting; import org.bigbluebutton.api.messaging.messages.EndMeeting; @@ -417,16 +420,22 @@ public class MeetingService implements MessageListener { public void setPublishRecording(List<String> idList, boolean publish) { for (String id : idList) { if (publish) { - recordingService.changeState(id, Recording.STATE_PUBLISHED); + if (recordingService.changeState(id, Recording.STATE_PUBLISHED)) { + gw.publishedRecording(new PublishedRecordingMessage(id)); + } } else { - recordingService.changeState(id, Recording.STATE_UNPUBLISHED); + if (recordingService.changeState(id, Recording.STATE_UNPUBLISHED)) { + gw.unpublishedRecording(new UnpublishedRecordingMessage(id)); + } } } } public void deleteRecordings(List<String> idList) { for (String id : idList) { - recordingService.changeState(id, Recording.STATE_DELETED); + if (recordingService.changeState(id, Recording.STATE_DELETED)) { + gw.deletedRecording(new DeletedRecordingMessage(id)); + } } } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/RecordingService.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/RecordingService.java index 57d5f2761a19a155fe7c4c7d1c65ed826145e224..0a18d237c6d2f8aa1e75b4ee093f61a7c498cc9d 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/RecordingService.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/RecordingService.java @@ -398,46 +398,52 @@ public class RecordingService { return r; } - public void changeState(String recordingId, String state) { + public boolean changeState(String recordingId, String state) { + boolean succeeded = false; if (state.equals(Recording.STATE_PUBLISHED)) { // It can only be published if it is unpublished - changeState(unpublishedDir, recordingId, state); + succeeded |= changeState(unpublishedDir, recordingId, state); } else if (state.equals(Recording.STATE_UNPUBLISHED)) { // It can only be unpublished if it is published - changeState(publishedDir, recordingId, state); + succeeded |= changeState(publishedDir, recordingId, state); } else if (state.equals(Recording.STATE_DELETED)) { // It can be deleted from any state - changeState(publishedDir, recordingId, state); - changeState(unpublishedDir, recordingId, state); + succeeded |= changeState(publishedDir, recordingId, state); + succeeded |= changeState(unpublishedDir, recordingId, state); } + return succeeded; } - private void changeState(String path, String recordingId, String state) { + private boolean changeState(String path, String recordingId, String state) { + boolean exists = false; + boolean succeeded = true; String[] format = getPlaybackFormats(path); for (String aFormat : format) { List<File> recordings = getDirectories(path + File.separatorChar + aFormat); for (File recording : recordings) { if (recording.getName().equalsIgnoreCase(recordingId)) { + exists = true; File dest; if (state.equals(Recording.STATE_PUBLISHED)) { dest = new File(publishedDir + File.separatorChar + aFormat); - publishRecording(dest, recordingId, recording, aFormat); + succeeded &= publishRecording(dest, recordingId, recording, aFormat); } else if (state.equals(Recording.STATE_UNPUBLISHED)) { dest = new File(unpublishedDir + File.separatorChar + aFormat); - unpublishRecording(dest, recordingId, recording, aFormat); + succeeded &= unpublishRecording(dest, recordingId, recording, aFormat); } else if (state.equals(Recording.STATE_DELETED)) { dest = new File(deletedDir + File.separatorChar + aFormat); - deleteRecording(dest, recordingId, recording, aFormat); + succeeded &= deleteRecording(dest, recordingId, recording, aFormat); } else { log.debug(String.format("State: %s, is not supported", state)); - return; + return false; } } } } + return exists && succeeded; } - public void publishRecording(File destDir, String recordingId, File recordingDir, String format) { + public boolean publishRecording(File destDir, String recordingId, File recordingDir, String format) { File metadataXml = recordingServiceHelper.getMetadataXmlLocation(recordingDir.getPath()); RecordingMetadata r = recordingServiceHelper.getRecordingMetadata(metadataXml); if (r != null) { @@ -453,14 +459,15 @@ public class RecordingService { destDir.getAbsolutePath() + File.separatorChar + recordingId); // Process the changes by saving the recording into metadata.xml - recordingServiceHelper.saveRecordingMetadata(medataXmlFile, r); + return recordingServiceHelper.saveRecordingMetadata(medataXmlFile, r); } catch (IOException e) { log.error("Failed to publish recording : " + recordingId, e); } } + return false; } - public void unpublishRecording(File destDir, String recordingId, File recordingDir, String format) { + public boolean unpublishRecording(File destDir, String recordingId, File recordingDir, String format) { File metadataXml = recordingServiceHelper.getMetadataXmlLocation(recordingDir.getPath()); RecordingMetadata r = recordingServiceHelper.getRecordingMetadata(metadataXml); @@ -476,14 +483,15 @@ public class RecordingService { destDir.getAbsolutePath() + File.separatorChar + recordingId); // Process the changes by saving the recording into metadata.xml - recordingServiceHelper.saveRecordingMetadata(medataXmlFile, r); + return recordingServiceHelper.saveRecordingMetadata(medataXmlFile, r); } catch (IOException e) { log.error("Failed to unpublish recording : " + recordingId, e); } } + return false; } - public void deleteRecording(File destDir, String recordingId, File recordingDir, String format) { + public boolean deleteRecording(File destDir, String recordingId, File recordingDir, String format) { File metadataXml = recordingServiceHelper.getMetadataXmlLocation(recordingDir.getPath()); RecordingMetadata r = recordingServiceHelper.getRecordingMetadata(metadataXml); @@ -499,11 +507,12 @@ public class RecordingService { destDir.getAbsolutePath() + File.separatorChar + recordingId); // Process the changes by saving the recording into metadata.xml - recordingServiceHelper.saveRecordingMetadata(medataXmlFile, r); + return recordingServiceHelper.saveRecordingMetadata(medataXmlFile, r); } catch (IOException e) { log.error("Failed to delete recording : " + recordingId, e); } } + return false; } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/DeleteRecordingMessage.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/DeleteRecordingMessage.java deleted file mode 100755 index dc79d97e64b6c49f5fa1bf0d862e2d09a01261d3..0000000000000000000000000000000000000000 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/DeleteRecordingMessage.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.bigbluebutton.api.messaging.converters.messages; - -public class DeleteRecordingMessage { - public static final String DELETE_RECORDING = "deleted"; - public static final String VERSION = "0.0.1"; - - public final String recordId; - public final String meetingId; - public final String externalMeetingId; - public final String format; - - public DeleteRecordingMessage(String recordId, String meetingId, String externalMeetingId, String format) { - this.recordId = recordId; - this.meetingId = meetingId; - this.externalMeetingId = externalMeetingId; - this.format = format; - } -} diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/DeletedRecordingMessage.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/DeletedRecordingMessage.java new file mode 100755 index 0000000000000000000000000000000000000000..91b8318706ef00e45f1efcec608666216dd8ff19 --- /dev/null +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/DeletedRecordingMessage.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.api.messaging.converters.messages; + +public class DeletedRecordingMessage { + public static final String DELETED_RECORDING_EVENT = "deleted_recording_event"; + public static final String VERSION = "0.0.1"; + + public final String recordId; + + public DeletedRecordingMessage(String recordId) { + this.recordId = recordId; + } +} diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/PublishRecordingMessage.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/PublishRecordingMessage.java deleted file mode 100755 index 509679ea7ef30cbb9b0cf02600a4b6180e4e79dd..0000000000000000000000000000000000000000 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/PublishRecordingMessage.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.bigbluebutton.api.messaging.converters.messages; - -public class PublishRecordingMessage { - public static final String PUBLISH_RECORDING = "published"; - public static final String VERSION = "0.0.1"; - - public final String recordId; - public final String meetingId; - public final String externalMeetingId; - public final String format; - - public PublishRecordingMessage(String recordId, String meetingId, String externalMeetingId, String format) { - this.recordId = recordId; - this.meetingId = meetingId; - this.externalMeetingId = externalMeetingId; - this.format = format; - } -} diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/PublishedRecordingMessage.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/PublishedRecordingMessage.java new file mode 100755 index 0000000000000000000000000000000000000000..d85f55f2affba9bf48663f27984889ba53ac3dcb --- /dev/null +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/PublishedRecordingMessage.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.api.messaging.converters.messages; + +public class PublishedRecordingMessage { + public static final String PUBLISHED_RECORDING_EVENT = "published_recording_event"; + public static final String VERSION = "0.0.1"; + + public final String recordId; + + public PublishedRecordingMessage(String recordId) { + this.recordId = recordId; + } +} diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/UnpublishRecordingMessage.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/UnpublishRecordingMessage.java deleted file mode 100755 index 822104657d6ed02d5e8f542bccc315fc0349967b..0000000000000000000000000000000000000000 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/UnpublishRecordingMessage.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.bigbluebutton.api.messaging.converters.messages; - -public class UnpublishRecordingMessage { - public static final String UNPUBLISH_RECORDING = "unpublished"; - public static final String VERSION = "0.0.1"; - - public final String recordId; - public final String meetingId; - public final String externalMeetingId; - public final String format; - - public UnpublishRecordingMessage(String recordId, String meetingId, String externalMeetingId, String format) { - this.recordId = recordId; - this.meetingId = meetingId; - this.externalMeetingId = externalMeetingId; - this.format = format; - } -} diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/UnpublishedRecordingMessage.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/UnpublishedRecordingMessage.java new file mode 100755 index 0000000000000000000000000000000000000000..f02807eef1886fe290ba0c85ba7ccc79d281e00c --- /dev/null +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/messaging/converters/messages/UnpublishedRecordingMessage.java @@ -0,0 +1,12 @@ +package org.bigbluebutton.api.messaging.converters.messages; + +public class UnpublishedRecordingMessage { + public static final String UNPUBLISHED_RECORDING_EVENT = "unpublished_recording_event"; + public static final String VERSION = "0.0.1"; + + public final String recordId; + + public UnpublishedRecordingMessage(String recordId) { + this.recordId = recordId; + } +} diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/util/RecordingMetadataReaderHelper.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/util/RecordingMetadataReaderHelper.java index e979af4e5959b374bc8aa73cab2d27e69b23202f..6c7f045e43f3d063af610925f1f4b8c20026bca7 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/util/RecordingMetadataReaderHelper.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/util/RecordingMetadataReaderHelper.java @@ -44,8 +44,8 @@ public class RecordingMetadataReaderHelper { return new File(destDir + File.separatorChar + "metadata.xml"); } - public void saveRecordingMetadata(File metadataXml, RecordingMetadata recordingMetadata) { - recordingServiceGW.saveRecordingMetadata(metadataXml, recordingMetadata); + public boolean saveRecordingMetadata(File metadataXml, RecordingMetadata recordingMetadata) { + return recordingServiceGW.saveRecordingMetadata(metadataXml, recordingMetadata); } public void setRecordingServiceGW(RecordingServiceGW recordingServiceGW) { diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java b/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java index 0fbd8f10d703cd33dcbf123dc98d41b7ce759c5d..cced3e2f34cfb9d4ebfadb793eedc2191a59b84f 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java @@ -2,11 +2,11 @@ package org.bigbluebutton.api2; import java.util.Map; -import org.bigbluebutton.api.messaging.converters.messages.DeleteRecordingMessage; import org.bigbluebutton.api.messaging.converters.messages.DestroyMeetingMessage; import org.bigbluebutton.api.messaging.converters.messages.EndMeetingMessage; -import org.bigbluebutton.api.messaging.converters.messages.PublishRecordingMessage; -import org.bigbluebutton.api.messaging.converters.messages.UnpublishRecordingMessage; +import org.bigbluebutton.api.messaging.converters.messages.PublishedRecordingMessage; +import org.bigbluebutton.api.messaging.converters.messages.UnpublishedRecordingMessage; +import org.bigbluebutton.api.messaging.converters.messages.DeletedRecordingMessage; import org.bigbluebutton.presentation.messages.IDocConversionMsg; public interface IBbbWebApiGWApp { @@ -36,8 +36,8 @@ public interface IBbbWebApiGWApp { void destroyMeeting(DestroyMeetingMessage msg); void endMeeting(EndMeetingMessage msg); void sendKeepAlive(String system, Long timestamp); - void publishRecording(PublishRecordingMessage msg); - void unpublishRecording(UnpublishRecordingMessage msg); - void deleteRecording(DeleteRecordingMessage msg); + void publishedRecording(PublishedRecordingMessage msg); + void unpublishedRecording(UnpublishedRecordingMessage msg); + void deletedRecording(DeletedRecordingMessage msg); void sendDocConversionMsg(IDocConversionMsg msg); } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api2/RecordingServiceGW.java b/bbb-common-web/src/main/java/org/bigbluebutton/api2/RecordingServiceGW.java index d23d4f2ec9b380fc7724b7c02e7f2055f32f0ef7..987d9f96b59a20cc3d1801e0cddc3cea864b8c05 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api2/RecordingServiceGW.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api2/RecordingServiceGW.java @@ -12,7 +12,7 @@ public interface RecordingServiceGW { String getRecordings2x(ArrayList<RecordingMetadata> recs); Option<RecordingMetadata> getRecordingMetadata(File xml); - void saveRecordingMetadata(File xml, RecordingMetadata metadata); + boolean saveRecordingMetadata(File xml, RecordingMetadata metadata); String getRecordingTextTracks(String recordId, String captionsDir); String putRecordingTextTrack(UploadedTrack track); } 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 6d62c007f4b22d54d1943c9533b207da058a0c62..dfce728857ffa53fe4112226e6c6c10f38abaee0 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 @@ -9,6 +9,7 @@ import org.bigbluebutton.api2.endpoint.redis.{ WebRedisSubscriberActor } import org.bigbluebutton.common2.redis.MessageSender import org.bigbluebutton.api2.meeting.{ OldMeetingMsgHdlrActor, RegisterUser } import org.bigbluebutton.common2.domain._ +import org.bigbluebutton.common2.util.JsonUtil import org.bigbluebutton.presentation.messages._ import scala.concurrent.duration._ import org.bigbluebutton.common2.redis._ @@ -165,19 +166,24 @@ class BbbWebApiGWApp( def sendKeepAlive(system: String, timestamp: java.lang.Long): Unit = { val event = MsgBuilder.buildCheckAlivePingSysMsg(system, timestamp.longValue()) msgToAkkaAppsEventBus.publish(MsgToAkkaApps(toAkkaAppsChannel, event)) - } - def publishRecording(msg: PublishRecordingMessage): Unit = { - + def publishedRecording(msg: PublishedRecordingMessage): Unit = { + val event = MsgBuilder.buildPublishedRecordingSysMsg(msg) + // Probably violating something here, but a new event bus looks just too much for this + msgSender.send(fromBbbWebRedisChannel, JsonUtil.toJson(event)) } - def unpublishRecording(msg: UnpublishRecordingMessage): Unit = { - + def unpublishedRecording(msg: UnpublishedRecordingMessage): Unit = { + val event = MsgBuilder.buildUnpublishedRecordingSysMsg(msg) + // Probably violating something here, but a new event bus looks just too much for this + msgSender.send(fromBbbWebRedisChannel, JsonUtil.toJson(event)) } - def deleteRecording(msg: DeleteRecordingMessage): Unit = { - + def deletedRecording(msg: DeletedRecordingMessage): Unit = { + val event = MsgBuilder.buildDeletedRecordingSysMsg(msg) + // Probably violating something here, but a new event bus looks just too much for this + msgSender.send(fromBbbWebRedisChannel, JsonUtil.toJson(event)) } def sendDocConversionMsg(msg: IDocConversionMsg): Unit = { 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 e71f7ff1301cc1bcdd65536536bf1b8b3fda99ef..ba5bcd29bc864cbdb7862c51fe74b00354af95e9 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 @@ -1,6 +1,6 @@ package org.bigbluebutton.api2 -import org.bigbluebutton.api.messaging.converters.messages.{DestroyMeetingMessage, EndMeetingMessage} +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.msgs._ @@ -143,4 +143,31 @@ object MsgBuilder { val req = PresentationPageCountErrorSysPubMsg(header, body) BbbCommonEnvCoreMsg(envelope, req) } + + def buildPublishedRecordingSysMsg(msg: PublishedRecordingMessage): BbbCommonEnvCoreMsg = { + val routing = collection.immutable.HashMap("sender" -> "bbb-web") + val envelope = BbbCoreEnvelope(PublishedRecordingSysMsg.NAME, routing) + val header = BbbCoreBaseHeader(PublishedRecordingSysMsg.NAME) + val body = PublishedRecordingSysMsgBody(msg.recordId) + val req = PublishedRecordingSysMsg(header, body) + BbbCommonEnvCoreMsg(envelope, req) + } + + def buildUnpublishedRecordingSysMsg(msg: UnpublishedRecordingMessage): BbbCommonEnvCoreMsg = { + val routing = collection.immutable.HashMap("sender" -> "bbb-web") + val envelope = BbbCoreEnvelope(UnpublishedRecordingSysMsg.NAME, routing) + val header = BbbCoreBaseHeader(UnpublishedRecordingSysMsg.NAME) + val body = UnpublishedRecordingSysMsgBody(msg.recordId) + val req = UnpublishedRecordingSysMsg(header, body) + BbbCommonEnvCoreMsg(envelope, req) + } + + def buildDeletedRecordingSysMsg(msg: DeletedRecordingMessage): BbbCommonEnvCoreMsg = { + val routing = collection.immutable.HashMap("sender" -> "bbb-web") + val envelope = BbbCoreEnvelope(DeletedRecordingSysMsg.NAME, routing) + val header = BbbCoreBaseHeader(DeletedRecordingSysMsg.NAME) + val body = DeletedRecordingSysMsgBody(msg.recordId) + val req = DeletedRecordingSysMsg(header, body) + BbbCommonEnvCoreMsg(envelope, req) + } } 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 e57516da9293fcb05f81a933154189efa5faeb8f..e81e0c743cc78f94fb082ce485834e9ca4e1dbe7 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 @@ -42,7 +42,8 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { } } - def saveRecordingMetadata(xml: File, metadata: RecordingMetadata): Unit = { + def saveRecordingMetadata(xml: File, metadata: RecordingMetadata): Boolean = { + var result = false try { val Encoding = StandardCharsets.UTF_8.name() val pp = new PrettyPrinter(80, 2) @@ -52,6 +53,7 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { try { writer.write("<?xml version='1.0' encoding='" + Encoding + "'?>\n") writer.write(pp.format(metadata.getRecMeta.toMetadataXml())) + result = true } catch { case ex: Exception => logger.info("Exception while saving {}", xml.getAbsolutePath) @@ -66,6 +68,7 @@ class RecMetaXmlHelper extends RecordingServiceGW with LogHelper { logger.info("Exception while saving {}", xml.getAbsolutePath) logger.info("Exception details: {}", ex.fillInStackTrace()) } + result } def getRecordingMetadata(xml: File): Option[RecordingMetadata] = {