视频保存

This commit is contained in:
duoaohui
2026-05-19 13:51:34 +08:00
parent 326675a68d
commit 163b541214
6 changed files with 36 additions and 13 deletions

View File

@@ -2,11 +2,11 @@ package controller
import (
"errors"
"os"
"strconv"
"github.com/echochat/backend/app/meeting/model"
"github.com/echochat/backend/app/meeting/service"
"github.com/echochat/backend/config"
"github.com/echochat/backend/pkg/logs"
"github.com/echochat/backend/pkg/utils"
"github.com/gin-gonic/gin"
@@ -21,11 +21,17 @@ import (
// - GET /rooms/:code/recordings 列出录制host 或参与者)
type MeetingRecordingController struct {
recordingSvc *service.MeetingRecordingService
cfg *config.MeetingConfig
}
// NewMeetingRecordingController Wire Provider
func NewMeetingRecordingController(svc *service.MeetingRecordingService) *MeetingRecordingController {
return &MeetingRecordingController{recordingSvc: svc}
//
// cfg 提供 InternalWebhookSecret用于校验 media-server 失败回调 X-Internal-Secret header
func NewMeetingRecordingController(
svc *service.MeetingRecordingService,
cfg *config.MeetingConfig,
) *MeetingRecordingController {
return &MeetingRecordingController{recordingSvc: svc, cfg: cfg}
}
// handleErr 将录制相关领域错误映射成 HTTP 状态码
@@ -161,9 +167,11 @@ type mediaServerFailurePayload struct {
// - 始终返回 200webhook 语义:吞错避免 media-server 端反复重试)
func (ctl *MeetingRecordingController) MediaServerFailureWebhook(c *gin.Context) {
funcName := "controller.meeting_recording_controller.MediaServerFailureWebhook"
secret := os.Getenv("INTERNAL_WEBHOOK_SECRET")
// 优先 config.meeting.internal_webhook_secretyaml/viper
// 环境变量覆盖走 ECHOCHAT_MEETING_INTERNAL_WEBHOOK_SECRETLoadConfig 已启用 viper.AutomaticEnv
secret := ctl.cfg.InternalWebhookSecret
if secret == "" {
logs.Warn(c.Request.Context(), funcName, "INTERNAL_WEBHOOK_SECRET 未配置,拒绝 webhook 请求")
logs.Warn(c.Request.Context(), funcName, "meeting.internal_webhook_secret 未配置,拒绝 webhook 请求")
utils.ResponseForbidden(c, "internal webhook not configured")
return
}