- get metadata xml

This commit is contained in:
Richard Alam 2017-09-01 15:00:38 -07:00
parent 38a63427bd
commit bb740a6d72
6 changed files with 462 additions and 3 deletions

View File

@ -65,6 +65,7 @@ val baz = foo1 map { f =>
baz.size baz.size
val playback = xml \ "playback" val playback = xml \ "playback"
val extensions = playback \ "extensions" val extensions = playback \ "extensions"
val preview = extensions \ "preview" val preview = extensions \ "preview"

View File

@ -1,4 +1,40 @@
package org.bigbluebutton.api2.domain package org.bigbluebutton.api2.domain
case class Extensions(extensions: scala.xml.NodeSeq)
object RecMeta {
def getMeetingId(r: RecMeta): String = {
r.meeting match {
case Some(m) => m.externalId
case None => r.id
}
}
def getInternalId(r: RecMeta): Option[String] = {
r.meeting match {
case Some(m) => Some(m.id)
case None => None
}
}
def getMeetingName(r: RecMeta): String = {
r.meeting match {
case Some(m) => m.name
case None =>
r.meta match {
case Some(m) => m.getOrElse("meetingName", "unknown")
case None => "unknown"
}
}
}
}
case class RecMeta(id: String, state: String, published: Boolean, startTime: Long, endTime: Long,
participants: Int, rawSize: Int, meeting: Option[RecMetaMeeting],
meta: Option[Map[String, String]], playback: Option[RecMetaPlayback])
case class RecMetaMeeting(id: String, externalId: String, name: String, breakout: Boolean)
case class RecMetaPlayback(format: String, link: String, processingTime: Int,
duration: Int, size: Int, extensions: Option[scala.xml.NodeSeq])
case class RecMetaImage(width: String, height: String, alt: String, link: String) case class RecMetaImage(width: String, height: String, alt: String, link: String)
case class RecMetaBreakout(parentId: String, sequence: Int, meetingId: String)

View File

@ -2,6 +2,8 @@ package org.bigbluebutton.api2.util
import java.io.IOException import java.io.IOException
import org.bigbluebutton.api2.domain.{RecMeta, RecMetaBreakout, RecMetaMeeting, RecMetaPlayback}
import scala.xml.{Elem, NodeSeq, XML} import scala.xml.{Elem, NodeSeq, XML}
object RecMetaXmlHelper extends LogHelper { object RecMetaXmlHelper extends LogHelper {
@ -21,7 +23,36 @@ object RecMetaXmlHelper extends LogHelper {
} }
} }
def getExtensions(playbackXml: Elem): Option[NodeSeq] = { private def getText(elem: NodeSeq, key: String, default: String): String = {
val res = (elem \ key).text
if (res.isEmpty) default else res
}
private def getValInt(elem: NodeSeq, key: String, default: Int): Int = {
val res = (elem \ key).text
if (res.isEmpty) default else res.toInt
}
private def getValLong(elem: NodeSeq, key: String, default: Long): Long = {
val res = (elem \ key).text
if (res.isEmpty) default else res.toLong
}
def getPlayback(metaXml: Elem): Option[RecMetaPlayback] = {
val playback = metaXml \ "playback"
if (playback.isEmpty) None
else {
val format = getText(playback, "format", "unknown")
val link = getText(playback, "link", "unknown")
val processingTime = getValInt(playback, "processing_time", 0)
val duration = getValInt(playback, "duration", 0)
val size = getValInt(playback, "size", 0)
val extensions = getExtensions(playback)
Some(RecMetaPlayback(format, link, processingTime, duration, size, extensions))
}
}
def getExtensions(playbackXml: NodeSeq): Option[NodeSeq] = {
val extensions = playbackXml \ "extensions" val extensions = playbackXml \ "extensions"
if (extensions.isEmpty) None if (extensions.isEmpty) None
else Some(extensions) else Some(extensions)
@ -42,6 +73,58 @@ object RecMetaXmlHelper extends LogHelper {
} else { } else {
None None
} }
}
def getMeeting(metaXml: Elem): Option[RecMetaMeeting] = {
val meetingNode = (metaXml \ "meeting")
if (meetingNode.isEmpty) {
None
} else {
val meetingElem = meetingNode(0) // convert from Node to Elem
val id = meetingElem.attribute("id").getOrElse("unknown").toString
val externalId = meetingElem.attribute("externalId").getOrElse("unknown").toString
val name = meetingElem.attribute("name").getOrElse("unknown").toString
val breakout = meetingElem.attribute("breakout").getOrElse("false")
Some(RecMetaMeeting(id, externalId, name, breakout.toString.toBoolean))
}
}
def getBreakout(metaXml: Elem): Option[RecMetaBreakout] = {
val breakoutNode = (metaXml \ "breakout")
if (breakoutNode.isEmpty) {
None
} else {
val breakoutElem = breakoutNode(0) // convert from Node to Elem
val parentId = breakoutElem.attribute("parentMeetingId").getOrElse("unknown").toString
val sequence = breakoutElem.attribute("sequence").getOrElse("0").toString
val meetingId = breakoutElem.attribute("meetingId").getOrElse("unknown").toString
Some(RecMetaBreakout(parentId, sequence.toInt, meetingId))
}
}
def getRecMeta(metaXml: Elem): Option[RecMeta] = {
val id = getText(metaXml, "id", "unknown")
val state = getText(metaXml, "state", "unknown")
val published = getText(metaXml, "published", "true")
val startTime = getValLong(metaXml, "start_time", 0)
val endTime = getValLong(metaXml, "end_time", 0)
val rawSize = getValInt(metaXml, "raw_size", 0)
val participants = getValInt(metaXml, "participants", 0)
val meeting = getMeeting(metaXml)
val meta = getMeta(metaXml)
val playback = getPlayback(metaXml)
Some(RecMeta(id, state, published.toString.toBoolean, startTime, endTime, participants, rawSize,
meeting, meta, playback))
}
def getRecMetaXml(r: RecMeta): Elem = {
val recordIdElem = <recordID>{r.id}</recordID>
val meetingIdElem = <meetingID>{RecMeta.getMeetingId(r)}</meetingID>
val internalId = RecMeta.getInternalId(r)
val buffer = new scala.xml.NodeBuffer
} }
} }

View File

@ -0,0 +1,298 @@
<?xml version="1.0" encoding="UTF-8"?>
<response>
<returncode>SUCCESS</returncode>
<recordings>
<recording>
<recordID>bc04628ab61776c9f65c695dc59f36abf8955bbc-1504087272607</recordID>
<meetingID>f01411a126dd7ea29c9c3859523bc1baac3c1e2f</meetingID>
<internalMeetingID>bc04628ab61776c9f65c695dc59f36abf8955bbc-1504087272607</internalMeetingID>
<name>тест</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504087272607</startTime>
<endTime>1504087451081</endTime>
<participants>2</participants>
<metadata>
<gl-listed>false</gl-listed>
<gl-token>an-a02174f6-тест</gl-token>
<gl-webhooks-callback-url>https://demo.bigbluebutton.org/b/rooms/an-a02174f6/%D1%82%D0%B5%D1%81%D1%82/callback</gl-webhooks-callback-url>
<isBreakout>false</isBreakout>
<meeting-name>тест</meeting-name>
<meetingId>f01411a126dd7ea29c9c3859523bc1baac3c1e2f</meetingId>
<meetingName>тест</meetingName>
<room-id>an-a02174f6</room-id>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=bc04628ab61776c9f65c695dc59f36abf8955bbc-1504087272607</url>
<processingTime>15016</processingTime>
<length>0</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/bc04628ab61776c9f65c695dc59f36abf8955bbc-1504087272607/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504087272638/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/bc04628ab61776c9f65c695dc59f36abf8955bbc-1504087272607/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504087272638/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/bc04628ab61776c9f65c695dc59f36abf8955bbc-1504087272607/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504087272638/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984</recordID>
<meetingID>5bd0e35013bc9761d06f01d4bfd9b4ae1c8df289</meetingID>
<internalMeetingID>b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984</internalMeetingID>
<name>Prueba 2</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504122319984</startTime>
<endTime>1504122655395</endTime>
<participants>4</participants>
<metadata>
<gl-listed>false</gl-listed>
<gl-token>vi-249c619c-Prueba 2</gl-token>
<gl-webhooks-callback-url>https://demo.bigbluebutton.org/b/rooms/vi-249c619c/Prueba%202/callback</gl-webhooks-callback-url>
<isBreakout>false</isBreakout>
<meeting-name>Prueba 2</meeting-name>
<meetingId>5bd0e35013bc9761d06f01d4bfd9b4ae1c8df289</meetingId>
<meetingName>Prueba 2</meetingName>
<room-id>vi-249c619c</room-id>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984</url>
<processingTime>10915</processingTime>
<length>1</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504122320002/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504122320002/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504122320002/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>92054d4d63772d6cd6eb222b24ba4afe704a6e02-1504111840674</recordID>
<meetingID>c35c6b973eb05cbb9757b2f3a765ada07777ca32</meetingID>
<internalMeetingID>92054d4d63772d6cd6eb222b24ba4afe704a6e02-1504111840674</internalMeetingID>
<name>Let&amp;#39;s Talk English: Episode 5</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504111840674</startTime>
<endTime>1504116188350</endTime>
<participants>2</participants>
<metadata>
<gl-listed>false</gl-listed>
<gl-token>es-4701f53c-Let&amp;#39;s Talk English: Episode 5</gl-token>
<gl-webhooks-callback-url>https://demo.bigbluebutton.org/b/rooms/es-4701f53c/Let&amp;#39;s%20Talk%20English:%20Episode%205/callback</gl-webhooks-callback-url>
<isBreakout>false</isBreakout>
<meeting-name>Let&amp;#39;s Talk English: Episode 5</meeting-name>
<meetingId>c35c6b973eb05cbb9757b2f3a765ada07777ca32</meetingId>
<meetingName>Let&amp;#39;s Talk English: Episode 5</meetingName>
<room-id>es-4701f53c</room-id>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=92054d4d63772d6cd6eb222b24ba4afe704a6e02-1504111840674</url>
<processingTime>1135643</processingTime>
<length>53</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/92054d4d63772d6cd6eb222b24ba4afe704a6e02-1504111840674/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504111840688/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/92054d4d63772d6cd6eb222b24ba4afe704a6e02-1504111840674/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504111840688/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/92054d4d63772d6cd6eb222b24ba4afe704a6e02-1504111840674/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504111840688/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093550964</recordID>
<meetingID>English 101</meetingID>
<internalMeetingID>6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093550964</internalMeetingID>
<name>English 101</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504093550964</startTime>
<endTime>1504093678083</endTime>
<participants>1</participants>
<metadata>
<description>TEST</description>
<email>Test Antonio</email>
<isBreakout>false</isBreakout>
<meetingId>English 101</meetingId>
<meetingName>English 101</meetingName>
<title>English 101</title>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093550964</url>
<processingTime>22380</processingTime>
<length>1</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093550964/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504093550976/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093550964/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504093550976/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093550964/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504093550976/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>81f4deea7881b1dc8df4016738e71b91e296346e-1504111142171</recordID>
<meetingID>c5ba1738a5c36c030b0ed0f561d0cb07b95bda42</meetingID>
<internalMeetingID>81f4deea7881b1dc8df4016738e71b91e296346e-1504111142171</internalMeetingID>
<name>kk</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504111142171</startTime>
<endTime>1504112672948</endTime>
<participants>3</participants>
<metadata>
<gl-listed>false</gl-listed>
<gl-token>ma-e7684b5a-kk</gl-token>
<gl-webhooks-callback-url>https://demo.bigbluebutton.org/b/rooms/ma-e7684b5a/kk/callback</gl-webhooks-callback-url>
<isBreakout>false</isBreakout>
<meeting-name>kk</meeting-name>
<meetingId>c5ba1738a5c36c030b0ed0f561d0cb07b95bda42</meetingId>
<meetingName>kk</meetingName>
<room-id>ma-e7684b5a</room-id>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=81f4deea7881b1dc8df4016738e71b91e296346e-1504111142171</url>
<processingTime>20933</processingTime>
<length>4</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/81f4deea7881b1dc8df4016738e71b91e296346e-1504111142171/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504111142183/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/81f4deea7881b1dc8df4016738e71b91e296346e-1504111142171/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504111142183/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/81f4deea7881b1dc8df4016738e71b91e296346e-1504111142171/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504111142183/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>6d380f36aa632afbdc0bf1334e6c5100b24c8b3a-1503352241858</recordID>
<meetingID>cc1a7a1d7c9c073a051f42de1ee541133a7e418b</meetingID>
<internalMeetingID>6d380f36aa632afbdc0bf1334e6c5100b24c8b3a-1503352241858</internalMeetingID>
<name>test</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1503352241858</startTime>
<endTime>1503352273297</endTime>
<participants>1</participants>
<metadata>
<gl-listed>false</gl-listed>
<gl-token>ff-23292c3b-test</gl-token>
<gl-webhooks-callback-url>https://test20.bigbluebutton.org/b/rooms/ff-23292c3b/test/callback</gl-webhooks-callback-url>
<isBreakout>false</isBreakout>
<meeting-name>test</meeting-name>
<meetingId>cc1a7a1d7c9c073a051f42de1ee541133a7e418b</meetingId>
<meetingName>test</meetingName>
<room-id>ff-23292c3b</room-id>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=6d380f36aa632afbdc0bf1334e6c5100b24c8b3a-1503352241858</url>
<processingTime>11990</processingTime>
<length>0</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://test20.bigbluebutton.org/presentation/6d380f36aa632afbdc0bf1334e6c5100b24c8b3a-1503352241858/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1503352243680/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://test20.bigbluebutton.org/presentation/6d380f36aa632afbdc0bf1334e6c5100b24c8b3a-1503352241858/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1503352243680/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://test20.bigbluebutton.org/presentation/6d380f36aa632afbdc0bf1334e6c5100b24c8b3a-1503352241858/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1503352243680/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>b27af2f930d418879550e09c7548d1cdd0be25cf-1504122114653</recordID>
<meetingID>5bd0e35013bc9761d06f01d4bfd9b4ae1c8df289</meetingID>
<internalMeetingID>b27af2f930d418879550e09c7548d1cdd0be25cf-1504122114653</internalMeetingID>
<name>Prueba 2</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504122114653</startTime>
<endTime>1504122278594</endTime>
<participants>2</participants>
<metadata>
<gl-listed>false</gl-listed>
<gl-token>vi-249c619c-Prueba 2</gl-token>
<gl-webhooks-callback-url>https://demo.bigbluebutton.org/b/rooms/vi-249c619c/Prueba%202/callback</gl-webhooks-callback-url>
<isBreakout>false</isBreakout>
<meeting-name>Prueba 2</meeting-name>
<meetingId>5bd0e35013bc9761d06f01d4bfd9b4ae1c8df289</meetingId>
<meetingName>Prueba 2</meetingName>
<room-id>vi-249c619c</room-id>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=b27af2f930d418879550e09c7548d1cdd0be25cf-1504122114653</url>
<processingTime>14123</processingTime>
<length>2</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/b27af2f930d418879550e09c7548d1cdd0be25cf-1504122114653/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504122114668/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/b27af2f930d418879550e09c7548d1cdd0be25cf-1504122114653/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504122114668/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/b27af2f930d418879550e09c7548d1cdd0be25cf-1504122114653/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504122114668/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
<recording>
<recordID>6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093384390</recordID>
<meetingID>English 101</meetingID>
<internalMeetingID>6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093384390</internalMeetingID>
<name>English 101</name>
<isBreakout>false</isBreakout>
<published>true</published>
<state>published</state>
<startTime>1504093384390</startTime>
<endTime>1504093447265</endTime>
<participants>1</participants>
<metadata>
<description>test</description>
<email>Antonio</email>
<isBreakout>false</isBreakout>
<meetingId>English 101</meetingId>
<meetingName>English 101</meetingName>
<title>English 101</title>
</metadata>
<playback>
<format>
<type>presentation</type>
<url>https://demo.bigbluebutton.org/playback/presentation/2.0/playback.html?meetingId=6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093384390</url>
<processingTime>8584</processingTime>
<length>0</length>
<preview>
<images>
<image width="176" height="136" alt="Welcome to">https://demo.bigbluebutton.org/presentation/6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093384390/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504093384402/thumbnails/thumb-1.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093384390/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504093384402/thumbnails/thumb-2.png</image>
<image width="176" height="136" alt="(this slide left blank for use as a whiteboard)">https://demo.bigbluebutton.org/presentation/6e35e3b2778883f5db637d7a5dba0a427f692e91-1504093384390/presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1504093384402/thumbnails/thumb-3.png</image>
</images>
</preview>
</format>
</playback>
</recording>
</recordings>
</response>

View File

@ -17,6 +17,7 @@
<meetingId>5bd0e35013bc9761d06f01d4bfd9b4ae1c8df289</meetingId> <meetingId>5bd0e35013bc9761d06f01d4bfd9b4ae1c8df289</meetingId>
<gl-listed>false</gl-listed> <gl-listed>false</gl-listed>
</meta> </meta>
<breakout parentMeetingId="f3ffe06acedf425565cc024c8ebe89a6552e8782-1489172964374" sequence="2" meetingId="f2041d123b6a4b994e7ad87ee9d348496a73472c-1489173065780"/>
<breakoutRooms> <breakoutRooms>
<breakoutRoom>32ee8bcccfad34f85c58a12f87fc4268130a4fd3-1489173065780</breakoutRoom> <breakoutRoom>32ee8bcccfad34f85c58a12f87fc4268130a4fd3-1489173065780</breakoutRoom>
<breakoutRoom>721d83a3907548734d4a505992ebb94ec1454a91-1489173065780</breakoutRoom> <breakoutRoom>721d83a3907548734d4a505992ebb94ec1454a91-1489173065780</breakoutRoom>

View File

@ -25,7 +25,47 @@ class RecMetaXmlHelperTests extends UnitSpec {
} }
} }
it should "get meeting element" in {
val xml = RecMetaXmlHelper.loadMetadataXml(metaFile)
xml match {
case Some(metaXml) =>
RecMetaXmlHelper.getMeeting(metaXml) match {
case Some(meeting) =>
assert(meeting.id == "b27af2f930d418879550e09c7548d1cdd0be25cf-1504122319984")
assert(meeting.breakout == false)
case None => fail("Failed to get meeting element.")
}
case None => fail("Failed to load metadata.xml")
}
}
it should "get playback element" in {
val xml = RecMetaXmlHelper.loadMetadataXml(metaFile)
xml match {
case Some(metaXml) =>
RecMetaXmlHelper.getPlayback(metaXml) match {
case Some(playback) =>
assert(playback.size == 531235)
assert(playback.extensions.isDefined)
case None => fail("Failed to get playback element.")
}
case None => fail("Failed to load metadata.xml")
}
}
it should "get extensions" in { it should "get extensions" in {
val xml = val xml = RecMetaXmlHelper.loadMetadataXml(metaFile)
xml match {
case Some(metaXml) =>
RecMetaXmlHelper.getMeta(metaXml) match {
case Some(meta) =>
assert(meta.size == 8)
case None => fail("Failed to get extensions element.")
}
case None => fail("Failed to load metadata.xml")
}
} }
} }