mirror of
https://github.com/livekit/livekit.git
synced 2026-08-28 13:54:34 +00:00
Support SIP list filters. (#3240)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user