mirror of
				https://github.com/owncast/owncast.git
				synced 2025-11-04 13:27:21 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package admin
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	"github.com/owncast/owncast/core"
 | 
						|
	"github.com/owncast/owncast/core/data"
 | 
						|
	"github.com/owncast/owncast/metrics"
 | 
						|
	"github.com/owncast/owncast/models"
 | 
						|
	"github.com/owncast/owncast/router/middleware"
 | 
						|
	log "github.com/sirupsen/logrus"
 | 
						|
)
 | 
						|
 | 
						|
// Status gets the details of the inbound broadcaster.
 | 
						|
func Status(w http.ResponseWriter, r *http.Request) {
 | 
						|
	broadcaster := core.GetBroadcaster()
 | 
						|
	status := core.GetStatus()
 | 
						|
	currentBroadcast := core.GetCurrentBroadcast()
 | 
						|
	health := metrics.GetStreamHealthOverview()
 | 
						|
	response := adminStatusResponse{
 | 
						|
		Broadcaster:            broadcaster,
 | 
						|
		CurrentBroadcast:       currentBroadcast,
 | 
						|
		Online:                 status.Online,
 | 
						|
		Health:                 health,
 | 
						|
		ViewerCount:            status.ViewerCount,
 | 
						|
		OverallPeakViewerCount: status.OverallMaxViewerCount,
 | 
						|
		SessionPeakViewerCount: status.SessionMaxViewerCount,
 | 
						|
		VersionNumber:          status.VersionNumber,
 | 
						|
		StreamTitle:            data.GetStreamTitle(),
 | 
						|
	}
 | 
						|
 | 
						|
	w.Header().Set("Content-Type", "application/json")
 | 
						|
	middleware.DisableCache(w)
 | 
						|
 | 
						|
	err := json.NewEncoder(w).Encode(response)
 | 
						|
	if err != nil {
 | 
						|
		log.Errorln(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
type adminStatusResponse struct {
 | 
						|
	Broadcaster            *models.Broadcaster          `json:"broadcaster"`
 | 
						|
	CurrentBroadcast       *models.CurrentBroadcast     `json:"currentBroadcast"`
 | 
						|
	Online                 bool                         `json:"online"`
 | 
						|
	ViewerCount            int                          `json:"viewerCount"`
 | 
						|
	OverallPeakViewerCount int                          `json:"overallPeakViewerCount"`
 | 
						|
	SessionPeakViewerCount int                          `json:"sessionPeakViewerCount"`
 | 
						|
	StreamTitle            string                       `json:"streamTitle"`
 | 
						|
	Health                 *models.StreamHealthOverview `json:"health"`
 | 
						|
	VersionNumber          string                       `json:"versionNumber"`
 | 
						|
}
 |