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, }) }