28 lines
916 B
Go
28 lines
916 B
Go
package service
|
||
|
||
import (
|
||
"context"
|
||
"strings"
|
||
|
||
roomv1 "hyapp.local/api/proto/room/v1"
|
||
"hyapp/pkg/roomid"
|
||
"hyapp/pkg/xerr"
|
||
)
|
||
|
||
// ResolveRoomAppCode 让已验签的腾讯 RTC 回调从房间事实解析租户。
|
||
// room-service 是房间归属 owner;gateway 不应信任 URL 中可伪造、也容易写死的 app_code。
|
||
func (s *Service) ResolveRoomAppCode(ctx context.Context, req *roomv1.ResolveRoomAppCodeRequest) (*roomv1.ResolveRoomAppCodeResponse, error) {
|
||
roomID := strings.TrimSpace(req.GetRoomId())
|
||
if !roomid.ValidStringID(roomID) {
|
||
return nil, xerr.New(xerr.InvalidArgument, "room_id is invalid")
|
||
}
|
||
meta, exists, err := s.repository.GetRoomMetaByGlobalID(ctx, roomID)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if !exists || strings.TrimSpace(meta.AppCode) == "" {
|
||
return nil, xerr.New(xerr.NotFound, "room not found")
|
||
}
|
||
return &roomv1.ResolveRoomAppCodeResponse{AppCode: meta.AppCode}, nil
|
||
}
|