summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/webrtc/v3/iceserver_js.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/webrtc/v3/iceserver_js.go')
-rw-r--r--vendor/github.com/pion/webrtc/v3/iceserver_js.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/github.com/pion/webrtc/v3/iceserver_js.go b/vendor/github.com/pion/webrtc/v3/iceserver_js.go
new file mode 100644
index 0000000..07b2dcb
--- /dev/null
+++ b/vendor/github.com/pion/webrtc/v3/iceserver_js.go
@@ -0,0 +1,42 @@
+// +build js,wasm
+
+package webrtc
+
+import (
+ "errors"
+
+ "github.com/pion/ice/v2"
+)
+
+// ICEServer describes a single STUN and TURN server that can be used by
+// the ICEAgent to establish a connection with a peer.
+type ICEServer struct {
+ URLs []string
+ Username string
+ // Note: TURN is not supported in the WASM bindings yet
+ Credential interface{}
+ CredentialType ICECredentialType
+}
+
+func (s ICEServer) parseURL(i int) (*ice.URL, error) {
+ return ice.ParseURL(s.URLs[i])
+}
+
+func (s ICEServer) validate() ([]*ice.URL, error) {
+ urls := []*ice.URL{}
+
+ for i := range s.URLs {
+ url, err := s.parseURL(i)
+ if err != nil {
+ return nil, err
+ }
+
+ if url.Scheme == ice.SchemeTypeTURN || url.Scheme == ice.SchemeTypeTURNS {
+ return nil, errors.New("TURN is not currently supported in the JavaScript/Wasm bindings")
+ }
+
+ urls = append(urls, url)
+ }
+
+ return urls, nil
+}