123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import sdpTransform from 'sdp-transform';
-
- /**
- * RTCSessionDescription implementation.
- */
- export default class RTCSessionDescription {
- /**
- * RTCSessionDescription constructor.
- * @param {Object} [data]
- * @param {String} [data.type] - 'offer' / 'answer'.
- * @param {String} [data.sdp] - SDP string.
- * @param {Object} [data._sdpObject] - SDP object generated by the
- * sdp-transform library.
- */
- constructor(data) {
- // @type {String}
- this._sdp = null;
-
- // @type {Object}
- this._sdpObject = null;
-
- // @type {String}
- this._type = null;
-
- switch (data.type) {
- case 'offer':
- break;
- case 'answer':
- break;
- default:
- throw new TypeError(`invalid type "${data.type}"`);
- }
-
- this._type = data.type;
-
- if (typeof data.sdp === 'string') {
- this._sdp = data.sdp;
- try {
- this._sdpObject = sdpTransform.parse(data.sdp);
- } catch (error) {
- throw new Error(`invalid sdp: ${error}`);
- }
- } else if (typeof data._sdpObject === 'object') {
- this._sdpObject = data._sdpObject;
- try {
- this._sdp = sdpTransform.write(data._sdpObject);
- } catch (error) {
- throw new Error(`invalid sdp object: ${error}`);
- }
- } else {
- throw new TypeError('invalid sdp or _sdpObject');
- }
- }
-
- /**
- * Get sdp field.
- * @return {String}
- */
- get sdp() {
- return this._sdp;
- }
-
- /**
- * Set sdp field.
- * NOTE: This is not allowed per spec, but lib-jitsi-meet uses it.
- * @param {String} sdp
- */
- set sdp(sdp) {
- try {
- this._sdpObject = sdpTransform.parse(sdp);
- } catch (error) {
- throw new Error(`invalid sdp: ${error}`);
- }
-
- this._sdp = sdp;
- }
-
- /**
- * Gets the internal sdp object.
- * @return {Object}
- * @private
- */
- get sdpObject() {
- return this._sdpObject;
- }
-
- /**
- * Get type field.
- * @return {String}
- */
- get type() {
- return this._type;
- }
-
- /**
- * Returns an object with type and sdp fields.
- * @return {Object}
- */
- toJSON() {
- return {
- sdp: this._sdp,
- type: this._type
- };
- }
- }
|