From 1abb3c8c22ab20fd483c8628ccedb938f4ff7c73 Mon Sep 17 00:00:00 2001 From: Alex X Date: Sat, 22 Feb 2025 11:39:32 +0300 Subject: [PATCH] Code refactoring for Nest RTSP source --- pkg/nest/api.go | 18 ++++++------------ pkg/nest/client.go | 19 +++++-------------- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/pkg/nest/api.go b/pkg/nest/api.go index 9e32cbcf..4ca1e8b8 100644 --- a/pkg/nest/api.go +++ b/pkg/nest/api.go @@ -120,21 +120,11 @@ func (a *API) GetDevices(projectID string) ([]DeviceInfo, error) { devices := make([]DeviceInfo, 0, len(resv.Devices)) for _, device := range resv.Devices { + // only RTSP and WEB_RTC available (both supported) if len(device.Traits.SdmDevicesTraitsCameraLiveStream.SupportedProtocols) == 0 { continue } - supported := false - for _, protocol := range device.Traits.SdmDevicesTraitsCameraLiveStream.SupportedProtocols { - if protocol == "WEB_RTC" || protocol == "RTSP" { - supported = true - break - } - } - if !supported { - continue - } - i := strings.LastIndexByte(device.Name, '/') if i <= 0 { continue @@ -146,7 +136,11 @@ func (a *API) GetDevices(projectID string) ([]DeviceInfo, error) { name = device.ParentRelations[0].DisplayName } - devices = append(devices, DeviceInfo{Name: name, DeviceID: device.Name[i+1:], Protocols: device.Traits.SdmDevicesTraitsCameraLiveStream.SupportedProtocols}) + devices = append(devices, DeviceInfo{ + Name: name, + DeviceID: device.Name[i+1:], + Protocols: device.Traits.SdmDevicesTraitsCameraLiveStream.SupportedProtocols, + }) } return devices, nil diff --git a/pkg/nest/client.go b/pkg/nest/client.go index e692359c..93c4ce64 100644 --- a/pkg/nest/client.go +++ b/pkg/nest/client.go @@ -33,12 +33,6 @@ func Dial(rawURL string) (core.Producer, error) { refreshToken := query.Get("refresh_token") projectID := query.Get("project_id") deviceID := query.Get("device_id") - protocols := strings.Split(query.Get("protocols"), ",") - - // Default to WEB_RTC for backwards compataiility - if len(protocols) == 0 { - protocols = append(protocols, "WEB_RTC") - } if cliendID == "" || cliendSecret == "" || refreshToken == "" || projectID == "" || deviceID == "" { return nil, errors.New("nest: wrong query") @@ -49,16 +43,13 @@ func Dial(rawURL string) (core.Producer, error) { return nil, err } - // Pick the first supported protocol in order of priority (WEB_RTC, RTSP) - for _, proto := range protocols { - if proto == "WEB_RTC" { - return rtcConn(nestAPI, rawURL, projectID, deviceID) - } else if proto == "RTSP" { - return rtspConn(nestAPI, rawURL, projectID, deviceID) - } + protocols := strings.Split(query.Get("protocols"), ",") + if len(protocols) > 0 && protocols[0] == "RTSP" { + return rtspConn(nestAPI, rawURL, projectID, deviceID) } - return nil, errors.New("nest: unsupported camera") + // Default to WEB_RTC for backwards compataiility + return rtcConn(nestAPI, rawURL, projectID, deviceID) } func (c *WebRTCClient) GetMedias() []*core.Media {