Files
Hightube/backend/internal/api/room.go

64 lines
1.4 KiB
Go

package api
import (
"net/http"
"github.com/gin-gonic/gin"
"hightube/internal/db"
)
// GetMyRoom returns the room details for the currently authenticated user
func GetMyRoom(c *gin.Context) {
userID, _ := c.Get("user_id")
room, err := db.LoadRoomByUserID(userID.(uint))
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "Room not found"})
return
}
c.JSON(http.StatusOK, gin.H{
"room_id": room.ID,
"title": room.Title,
"stream_key": room.StreamKey,
"is_active": room.IsActive,
})
}
// GetActiveRooms returns a list of all currently active live rooms
func GetActiveRooms(c *gin.Context) {
rooms, err := db.ListActiveRooms()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to fetch active rooms"})
return
}
// Return safe information (do not leak stream keys)
var result []map[string]interface{}
for _, r := range rooms {
result = append(result, map[string]interface{}{
"room_id": r.ID,
"title": r.Title,
"user_id": r.UserID,
})
}
c.JSON(http.StatusOK, gin.H{"active_rooms": result})
}
func GetRoomPlaybackOptions(c *gin.Context) {
roomID := c.Param("room_id")
qualities := []string{"source"}
if adminRTMP != nil {
if available := adminRTMP.AvailablePlaybackQualities(roomID); len(available) > 0 {
qualities = available
}
}
c.JSON(http.StatusOK, gin.H{
"room_id": roomID,
"qualities": qualities,
})
}