mirror of
https://github.com/teacat/chaturbate-dvr.git
synced 2025-10-29 16:59:59 +00:00
2.0.0 refactor
This commit is contained in:
104
router/router_handler.go
Normal file
104
router/router_handler.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/teacat/chaturbate-dvr/entity"
|
||||
"github.com/teacat/chaturbate-dvr/server"
|
||||
)
|
||||
|
||||
// IndexData represents the data structure for the index page.
|
||||
type IndexData struct {
|
||||
Config *entity.Config
|
||||
Channels []*entity.ChannelInfo
|
||||
}
|
||||
|
||||
// Index renders the index page with channel information.
|
||||
func Index(c *gin.Context) {
|
||||
c.HTML(200, "index.html", &IndexData{
|
||||
Config: server.Config,
|
||||
Channels: server.Manager.ChannelInfo(),
|
||||
})
|
||||
}
|
||||
|
||||
// CreateChannelRequest represents the request body for creating a channel.
|
||||
type CreateChannelRequest struct {
|
||||
Username string `form:"username" binding:"required"`
|
||||
Framerate int `form:"framerate" binding:"required"`
|
||||
Resolution int `form:"resolution" binding:"required"`
|
||||
Pattern string `form:"pattern" binding:"required"`
|
||||
MaxDuration int `form:"max_duration"`
|
||||
MaxFilesize int `form:"max_filesize"`
|
||||
}
|
||||
|
||||
// CreateChannel creates a new channel.
|
||||
func CreateChannel(c *gin.Context) {
|
||||
var req *CreateChannelRequest
|
||||
if err := c.Bind(&req); err != nil {
|
||||
c.AbortWithError(http.StatusBadRequest, fmt.Errorf("bind: %w", err))
|
||||
return
|
||||
}
|
||||
|
||||
for _, username := range strings.Split(req.Username, ",") {
|
||||
server.Manager.CreateChannel(&entity.ChannelConfig{
|
||||
IsPaused: false,
|
||||
Username: username,
|
||||
Framerate: req.Framerate,
|
||||
Resolution: req.Resolution,
|
||||
Pattern: req.Pattern,
|
||||
MaxDuration: req.MaxDuration,
|
||||
MaxFilesize: req.MaxFilesize,
|
||||
CreatedAt: time.Now().Unix(),
|
||||
}, true)
|
||||
}
|
||||
c.Redirect(http.StatusFound, "/")
|
||||
}
|
||||
|
||||
// StopChannel stops a channel.
|
||||
func StopChannel(c *gin.Context) {
|
||||
server.Manager.StopChannel(c.Param("username"))
|
||||
|
||||
c.Redirect(http.StatusFound, "/")
|
||||
}
|
||||
|
||||
// PauseChannel pauses a channel.
|
||||
func PauseChannel(c *gin.Context) {
|
||||
server.Manager.PauseChannel(c.Param("username"))
|
||||
|
||||
c.Redirect(http.StatusFound, "/")
|
||||
}
|
||||
|
||||
// ResumeChannel resumes a paused channel.
|
||||
func ResumeChannel(c *gin.Context) {
|
||||
server.Manager.ResumeChannel(c.Param("username"))
|
||||
|
||||
c.Redirect(http.StatusFound, "/")
|
||||
}
|
||||
|
||||
// Updates handles the SSE connection for updates.
|
||||
func Updates(c *gin.Context) {
|
||||
server.Manager.Subscriber(c.Writer, c.Request)
|
||||
}
|
||||
|
||||
// UpdateConfigRequest represents the request body for updating configuration.
|
||||
type UpdateConfigRequest struct {
|
||||
Cookies string `form:"cookies"`
|
||||
UserAgent string `form:"user_agent"`
|
||||
}
|
||||
|
||||
// UpdateConfig updates the server configuration.
|
||||
func UpdateConfig(c *gin.Context) {
|
||||
var req *UpdateConfigRequest
|
||||
if err := c.Bind(&req); err != nil {
|
||||
c.AbortWithError(http.StatusBadRequest, fmt.Errorf("bind: %w", err))
|
||||
return
|
||||
}
|
||||
|
||||
server.Config.Cookies = req.Cookies
|
||||
server.Config.UserAgent = req.UserAgent
|
||||
c.Redirect(http.StatusFound, "/")
|
||||
}
|
||||
Reference in New Issue
Block a user