mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-09-26 20:31:11 +08:00
45 lines
982 B
Go
45 lines
982 B
Go
package yandex
|
|
|
|
import (
|
|
"net/url"
|
|
|
|
"github.com/AlexxIT/go2rtc/internal/streams"
|
|
"github.com/AlexxIT/go2rtc/pkg/core"
|
|
"github.com/AlexxIT/go2rtc/pkg/yandex"
|
|
)
|
|
|
|
func Init() {
|
|
streams.HandleFunc("yandex", func(source string) (core.Producer, error) {
|
|
u, err := url.Parse(source)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
query := u.Query()
|
|
token := query.Get("x_token")
|
|
|
|
session, err := yandex.GetSession(token)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
deviceID := query.Get("device_id")
|
|
|
|
if query.Has("snapshot") {
|
|
rawURL, err := session.GetSnapshotURL(deviceID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
rawURL += "/current.jpg?" + query.Get("snapshot") + "#header=Cookie:" + session.GetCookieString(rawURL)
|
|
return streams.GetProducer(rawURL)
|
|
}
|
|
|
|
room, err := session.WebrtcCreateRoom(deviceID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return goloomClient(room.ServiceUrl, room.ServiceName, room.RoomId, room.ParticipantId, room.Credentials)
|
|
})
|
|
}
|