Added owner information

This commit is contained in:
Ziver Koc 2020-10-15 16:15:38 +02:00
parent 2dbc169a0f
commit 23090d2bd5
5 changed files with 79 additions and 32 deletions

View file

@ -88,10 +88,10 @@ public class SDPParser {
public List<SessionDescription> parse() throws IOException { public List<SessionDescription> parse() throws IOException {
List<SessionDescription> sessions = new ArrayList<>(); List<SessionDescription> sessions = new ArrayList<>();
String line;
SessionDescription currentSession = null; SessionDescription currentSession = null;
TimingDescription currentTiming = null; TimingDescription currentTiming = null;
MediaDescription currentMedia = null; MediaDescription currentMedia = null;
String line;
String[] tmpArr; String[] tmpArr;
while ((line=IOUtil.readLine(in)) != null) { while ((line=IOUtil.readLine(in)) != null) {
@ -115,7 +115,20 @@ public class SDPParser {
currentSession.protocolVersion = Integer.parseInt(getValue(line)); currentSession.protocolVersion = Integer.parseInt(getValue(line));
break; break;
// TODO: o=<owner username> <session id> <session version> <network type> <address type> <address> // o=<owner username> <session id> <session version> <network type> <address type> <address>
case 'o':
if (currentSession == null) throw new RuntimeException("Received session owner before session definition: '" + line + "'");
tmpArr = getValueArray(line);
if (tmpArr.length != 6) throw new RuntimeException("Incorrect owner definition found: '" + line + "'");
currentSession.sessionOwner = tmpArr[0];
currentSession.sessionId = Long.parseLong(tmpArr[1]);
currentSession.sessionAnnouncementVersion = Long.parseLong(tmpArr[2]);
currentSession.ownerNetworkType = tmpArr[3];
currentSession.ownerAddressType = tmpArr[4];
currentSession.ownerAddress = tmpArr[5];
break;
// s=<session title> // s=<session title>
case 's': case 's':

View file

@ -12,11 +12,11 @@ public class SessionDescription {
protected int protocolVersion; protected int protocolVersion;
protected String sessionOwner; protected String sessionOwner;
protected String sessionId; protected long sessionId;
protected String sessionVersion; protected long sessionAnnouncementVersion;
protected String networkType; protected String ownerNetworkType = "IN";
protected String addressType; protected String ownerAddressType = "IP4"; // IP4 or IP6
protected String address; protected String ownerAddress;
protected String sessionTitle; protected String sessionTitle;
protected String sessionDescription; protected String sessionDescription;
@ -40,24 +40,24 @@ public class SessionDescription {
return sessionOwner; return sessionOwner;
} }
public String getSessionId() { public long getSessionId() {
return sessionId; return sessionId;
} }
public String getSessionVersion() { public long getAnnouncementVersion() {
return sessionVersion; return sessionAnnouncementVersion;
} }
public String getNetworkType() { public String getOwnerNetworkType() {
return networkType; return ownerNetworkType;
} }
public String getAddressType() { public String getOwnerAddressType() {
return addressType; return ownerAddressType;
} }
public String getAddress() { public String getOwnerAddress() {
return address; return ownerAddress;
} }
public String getSessionTitle() { public String getSessionTitle() {
@ -93,8 +93,9 @@ public class SessionDescription {
StringBuffer output = new StringBuffer(); StringBuffer output = new StringBuffer();
output.append("v=").append(protocolVersion).append('\n'); output.append("v=").append(protocolVersion).append('\n');
// TODO: o=<owner username> <session id> <session version> <network type> <address type> <address> output.append("o=").append(sessionOwner).append(' ').append(sessionId).append(' ').append(sessionAnnouncementVersion)
output.append("s=").append(sessionTitle).append('\n');; .append(' ').append(ownerNetworkType).append(' ').append(ownerAddressType).append(' ').append(ownerAddress).append('\n');
output.append("s=").append(sessionTitle).append('\n');
if (sessionDescription != null) output.append("i=").append(sessionDescription).append('\n'); if (sessionDescription != null) output.append("i=").append(sessionDescription).append('\n');
if (sessionURI != null) output.append("u=").append(sessionURI).append('\n'); if (sessionURI != null) output.append("u=").append(sessionURI).append('\n');

View file

@ -56,7 +56,7 @@ public class URLDecoderTest {
@Test @Test
public void percentMultibyteTest() throws UnsupportedEncodingException { public void percentMultibyteTest() throws UnsupportedEncodingException {
assertEquals("Ängen", java.net.URLDecoder.decode("%C3%84ngen", "UTF-8")); assertEquals("Ängen", java.net.URLDecoder.decode("%C3%84ngen", "UTF-8"));
assertEquals("Ängen", URLDecoder.decode("%C3%84ngen")); assertEquals("Ängen", URLDecoder.decode("%C3%84ngen"));
} }
} }

View file

@ -66,10 +66,22 @@ public class SDPParserTest {
assertEquals(1, sessions.size()); assertEquals(1, sessions.size());
SessionDescription session = sessions.get(0); SessionDescription session = sessions.get(0);
// v=
assertEquals(0, session.getProtocolVersion()); assertEquals(0, session.getProtocolVersion());
// o=
assertEquals("mhandley", session.getSessionOwner());
assertEquals(2890844526l, session.getSessionId());
assertEquals(2890842807l, session.getAnnouncementVersion());
assertEquals("IN", session.getOwnerNetworkType());
assertEquals("IP4", session.getOwnerAddressType());
assertEquals("126.16.64.4", session.getOwnerAddress());
// s=
assertEquals("SDP Seminar", session.getSessionTitle()); assertEquals("SDP Seminar", session.getSessionTitle());
// i=
assertEquals("A Seminar on the session description protocol", session.getSessionDescription()); assertEquals("A Seminar on the session description protocol", session.getSessionDescription());
// u=
assertEquals("http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps", session.getSessionURI()); assertEquals("http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps", session.getSessionURI());
// e=
assertEquals("mjh@isi.edu (Mark Handley)", session.getOrganizerEmail()); assertEquals("mjh@isi.edu (Mark Handley)", session.getOrganizerEmail());
} }

View file

@ -26,7 +26,7 @@ package zutil.parser.sdp;
import org.junit.Test; import org.junit.Test;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
public class SessionDescriptionTest { public class SessionDescriptionTest {
@ -46,9 +46,7 @@ public class SessionDescriptionTest {
// TODO: [optional] k=<method=clear|base64|uri|prompt>:<encryption key> // Encryption information // TODO: [optional] k=<method=clear|base64|uri|prompt>:<encryption key> // Encryption information
// TODO: [optional] a=<session attribute>:<value> // TODO: [optional] a=<session attribute>:<value>
// --------------------------------------
// Media description
// --------------------------------------
@Test @Test
public void basicSession() { public void basicSession() {
@ -56,8 +54,28 @@ public class SessionDescriptionTest {
session.protocolVersion = 0; session.protocolVersion = 0;
session.sessionTitle = "SDP Seminar"; session.sessionTitle = "SDP Seminar";
assertEquals(session.toString(), "v=0\n" + assertEquals("v=0\n" +
"s=SDP Seminar" "o=null 0 0 IN IP4 null\n" +
"s=SDP Seminar",
session.toString()
);
}
@Test
public void basicOwner() {
SessionDescription session = new SessionDescription();
session.protocolVersion = 0;
session.sessionTitle = "SDP Seminar";
session.sessionOwner = "mhandley";
session.sessionId = 2890844526l;
session.sessionAnnouncementVersion = 2890842807l;
session.ownerAddress = "126.16.64.4";
assertEquals("v=0\n" +
"o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4\n" +
"s=SDP Seminar",
session.toString()
); );
} }
@ -72,9 +90,11 @@ public class SessionDescriptionTest {
session.sessionTitle = "SDP Seminar"; session.sessionTitle = "SDP Seminar";
session.timings.add(timing); session.timings.add(timing);
assertEquals(session.toString(), "v=0\n" + assertEquals("v=0\n" +
"s=SDP Seminar\n" + "o=null 0 0 IN IP4 null\n" +
"t=2873397496 2873404696" "s=SDP Seminar\n" +
"t=2873397496 2873404696",
session.toString()
); );
} }
@ -91,11 +111,12 @@ public class SessionDescriptionTest {
session.sessionTitle = "SDP Seminar"; session.sessionTitle = "SDP Seminar";
session.media.add(media); session.media.add(media);
assertEquals(session.toString(), "v=0\n" + assertEquals("v=0\n" +
"o=null 0 0 IN IP4 null\n" +
"s=SDP Seminar\n" + "s=SDP Seminar\n" +
"m=video 51372 RTP/AVP\n" + "m=video 51372 RTP/AVP\n" +
"i=main video feed" "i=main video feed",
session.toString()
); );
} }
} }