chaturbate-dvr/gateway/handler/start_stream.go
2023-12-12 14:48:48 +08:00

58 lines
1.3 KiB
Go

package handler
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/teacat/chaturbate-dvr/domain/stream"
)
//=======================================================
// Request & Response
//=======================================================
type StartStreamRequest struct {
Username string
Resolution int
ResolutionFallback stream.ResolutionFallback
Framerate int
SplitByFilesize int
SplitByDuration int
}
type StartStreamResponse struct {
}
//=======================================================
// Factory
//=======================================================
type StartStreamHandler struct {
manager stream.Manager
}
func NewStartStreamHandler(manager stream.Manager) *StartStreamHandler {
return &StartStreamHandler{
manager: manager,
}
}
//=======================================================
// Handle
//=======================================================
func (h *StartStreamHandler) Handle(ctx *gin.Context, req *StartStreamRequest) (*StartStreamResponse, error) {
if err := h.manager.AddStream(
req.Username,
req.ResolutionFallback,
req.Resolution,
req.Framerate,
req.SplitByFilesize,
req.SplitByDuration,
false,
); err != nil {
return nil, fmt.Errorf("add stream: %w", err)
}
return &StartStreamResponse{}, nil
}