60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package callbackapi
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"hyapp/services/gateway-service/internal/client"
|
|
)
|
|
|
|
// TencentIMConfig 是腾讯云 IM 服务端回调校验需要的最小配置。
|
|
type TencentIMConfig struct {
|
|
SDKAppID int64
|
|
AdminIdentifier string
|
|
CallbackAuthToken string
|
|
GroupIDPrefix string
|
|
}
|
|
|
|
// TencentRTCConfig 是腾讯云 RTC 服务端回调校验需要的最小配置。
|
|
type TencentRTCConfig struct {
|
|
SDKAppID int64
|
|
CallbackSignKey string
|
|
UserSigTTL time.Duration
|
|
}
|
|
|
|
// Handler owns external Tencent callback endpoints.
|
|
// Tencent callback responses intentionally bypass gateway envelope because Tencent only accepts provider-native shapes.
|
|
type Handler struct {
|
|
roomClient client.RoomClient
|
|
roomGuardClient client.RoomGuardClient
|
|
userProfileClient client.UserProfileClient
|
|
tencentIM TencentIMConfig
|
|
tencentRTC TencentRTCConfig
|
|
}
|
|
|
|
type Config struct {
|
|
RoomClient client.RoomClient
|
|
RoomGuardClient client.RoomGuardClient
|
|
UserProfileClient client.UserProfileClient
|
|
TencentIM TencentIMConfig
|
|
TencentRTC TencentRTCConfig
|
|
}
|
|
|
|
func New(config Config) *Handler {
|
|
return &Handler{
|
|
roomClient: config.RoomClient,
|
|
roomGuardClient: config.RoomGuardClient,
|
|
userProfileClient: config.UserProfileClient,
|
|
tencentIM: config.TencentIM,
|
|
tencentRTC: config.TencentRTC,
|
|
}
|
|
}
|
|
|
|
func (h *Handler) HandleTencentIMCallback(writer http.ResponseWriter, request *http.Request) {
|
|
h.handleTencentIMCallback(writer, request)
|
|
}
|
|
|
|
func (h *Handler) HandleTencentRTCCallback(writer http.ResponseWriter, request *http.Request) {
|
|
h.handleTencentRTCCallback(writer, request)
|
|
}
|