Support SIP list filters. (#3240)

This commit is contained in:
Denys Smirnov
2024-12-09 22:57:47 +02:00
committed by GitHub
parent c172ba13e6
commit dc6fe3aae5
3 changed files with 61 additions and 12 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ require (
github.com/jxskiss/base62 v1.1.0
github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1
github.com/livekit/mediatransportutil v0.0.0-20241128072814-c363618d4c98
github.com/livekit/protocol v1.28.2-0.20241128110641-c9f20a60249a
github.com/livekit/protocol v1.29.5-0.20241209183753-f6b5078b2244
github.com/livekit/psrpc v0.6.1-0.20241018124827-1efff3d113a8
github.com/mackerelio/go-osstat v0.2.5
github.com/magefile/mage v1.15.0
+2 -2
View File
@@ -165,8 +165,8 @@ github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 h1:jm09419p0lqTkD
github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
github.com/livekit/mediatransportutil v0.0.0-20241128072814-c363618d4c98 h1:QA7DqIC/ZSsMj8HC0+zNfMMwssHbA0alZALK68r30LQ=
github.com/livekit/mediatransportutil v0.0.0-20241128072814-c363618d4c98/go.mod h1:WIVFAGzVZ7VMjPC5+nbSfwdFjWcbuLgx97KeNSUDTEo=
github.com/livekit/protocol v1.28.2-0.20241128110641-c9f20a60249a h1:dI26u+l1pBBwojkTCuY8VVbNbwoWBaXM9nRY3uDg3p8=
github.com/livekit/protocol v1.28.2-0.20241128110641-c9f20a60249a/go.mod h1:mqXSWNHbENjxM0/HG25wZ7wgja/K9fA0PeQxi+MPmWw=
github.com/livekit/protocol v1.29.5-0.20241209183753-f6b5078b2244 h1:Eg9HK+5bMCDRKhh5g5g16oyNaMbCqMrJvxFBaBuP7Vo=
github.com/livekit/protocol v1.29.5-0.20241209183753-f6b5078b2244/go.mod h1:NDg1btMpKCzr/w6QR5kDuXw/e4Y7yOBE+RUAHsc+Y/M=
github.com/livekit/psrpc v0.6.1-0.20241018124827-1efff3d113a8 h1:Ibh0LoFl5NW5a1KFJEE0eLxxz7dqqKmYTj/BfCb0PbY=
github.com/livekit/psrpc v0.6.1-0.20241018124827-1efff3d113a8/go.mod h1:CQUBSPfYYAaevg1TNCc6/aYsa8DJH4jSRFdCeSZk5u0=
github.com/mackerelio/go-osstat v0.2.5 h1:+MqTbZUhoIt4m8qzkVoXUJg1EuifwlAJSk4Yl2GXh+o=
+58 -9
View File
@@ -16,6 +16,7 @@ package service
import (
"context"
"errors"
"time"
"github.com/twitchtv/twirp"
@@ -231,10 +232,26 @@ func (s *SIPService) ListSIPInboundTrunk(ctx context.Context, req *livekit.ListS
return nil, ErrSIPNotConnected
}
trunks, err := s.store.ListSIPInboundTrunk(ctx)
if err != nil {
return nil, err
var trunks []*livekit.SIPInboundTrunkInfo
if len(req.TrunkIds) != 0 {
trunks = make([]*livekit.SIPInboundTrunkInfo, len(req.TrunkIds))
for i, id := range req.TrunkIds {
t, err := s.store.LoadSIPInboundTrunk(ctx, id)
if errors.Is(err, ErrSIPTrunkNotFound) {
continue // keep nil in slice
} else if err != nil {
return nil, err
}
trunks[i] = t
}
} else {
var err error
trunks, err = s.store.ListSIPInboundTrunk(ctx)
if err != nil {
return nil, err
}
}
trunks = req.FilterSlice(trunks)
return &livekit.ListSIPInboundTrunkResponse{Items: trunks}, nil
}
@@ -247,10 +264,26 @@ func (s *SIPService) ListSIPOutboundTrunk(ctx context.Context, req *livekit.List
return nil, ErrSIPNotConnected
}
trunks, err := s.store.ListSIPOutboundTrunk(ctx)
if err != nil {
return nil, err
var trunks []*livekit.SIPOutboundTrunkInfo
if len(req.TrunkIds) != 0 {
trunks = make([]*livekit.SIPOutboundTrunkInfo, len(req.TrunkIds))
for i, id := range req.TrunkIds {
t, err := s.store.LoadSIPOutboundTrunk(ctx, id)
if errors.Is(err, ErrSIPTrunkNotFound) {
continue // keep nil in slice
} else if err != nil {
return nil, err
}
trunks[i] = t
}
} else {
var err error
trunks, err = s.store.ListSIPOutboundTrunk(ctx)
if err != nil {
return nil, err
}
}
trunks = req.FilterSlice(trunks)
return &livekit.ListSIPOutboundTrunkResponse{Items: trunks}, nil
}
@@ -326,10 +359,26 @@ func (s *SIPService) ListSIPDispatchRule(ctx context.Context, req *livekit.ListS
return nil, ErrSIPNotConnected
}
rules, err := s.store.ListSIPDispatchRule(ctx)
if err != nil {
return nil, err
var rules []*livekit.SIPDispatchRuleInfo
if len(req.DispatchRuleIds) != 0 {
rules = make([]*livekit.SIPDispatchRuleInfo, len(req.DispatchRuleIds))
for i, id := range req.DispatchRuleIds {
r, err := s.store.LoadSIPDispatchRule(ctx, id)
if errors.Is(err, ErrSIPDispatchRuleNotFound) {
continue // keep nil in slice
} else if err != nil {
return nil, err
}
rules[i] = r
}
} else {
var err error
rules, err = s.store.ListSIPDispatchRule(ctx)
if err != nil {
return nil, err
}
}
rules = req.FilterSlice(rules)
return &livekit.ListSIPDispatchRuleResponse{Items: rules}, nil
}