/
SessionDescriptionToJson.cs
57 lines (50 loc) · 1.61 KB
/
SessionDescriptionToJson.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.Linq;
using Unity.WebRTC;
using UnityEngine;
namespace WebRTC
{
[Serializable]
public class SessionDescriptionToJson
{
public string type;
public string sdp;
private static readonly Dictionary<RTCSdpType, string> Converter =
Enum.GetValues(typeof(RTCSdpType))
.Cast<RTCSdpType>()
.ToDictionary(sdpType => sdpType, sdpType => sdpType.ToString().ToLower());
public static SessionDescriptionToJson From(RTCSessionDescription sessionDescription)
{
return new SessionDescriptionToJson
{
type = Converter[sessionDescription.type],
sdp = sessionDescription.sdp
};
}
public RTCSessionDescription To()
{
return new RTCSessionDescription
{
type = Converter.FirstOrDefault(pair => string.Equals(pair.Value.ToLower(), this.type.ToLower())).Key,
sdp = this.sdp,
};
}
public static SessionDescriptionToJson FromJson(string json)
{
return JsonUtility.FromJson<SessionDescriptionToJson>(json);
}
public string ToJson()
{
return JsonUtility.ToJson(this);
}
}
// ReSharper disable once InconsistentNaming
public static class ExtensionRTCSessionDescription
{
public static SessionDescriptionToJson From(this RTCSessionDescription description)
{
return SessionDescriptionToJson.From(description);
}
}
}