package controllers import ( "encoding/json" "net/http" "time" "github.com/owncast/owncast/core" "github.com/owncast/owncast/router/middleware" "github.com/owncast/owncast/utils" ) // GetStatus gets the status of the server. func GetStatus(w http.ResponseWriter, r *http.Request) { status := core.GetStatus() response := webStatusResponse{ Online: status.Online, ViewerCount: status.ViewerCount, ServerTime: time.Now(), LastConnectTime: status.LastConnectTime, LastDisconnectTime: status.LastDisconnectTime, VersionNumber: status.VersionNumber, StreamTitle: status.StreamTitle, } w.Header().Set("Content-Type", "application/json") middleware.DisableCache(w) if err := json.NewEncoder(w).Encode(response); err != nil { InternalErrorHandler(w, err) } } type webStatusResponse struct { Online bool `json:"online"` ViewerCount int `json:"viewerCount"` ServerTime time.Time `json:"serverTime"` LastConnectTime *utils.NullTime `json:"lastConnectTime"` LastDisconnectTime *utils.NullTime `json:"lastDisconnectTime"` VersionNumber string `json:"versionNumber"` StreamTitle string `json:"streamTitle"` }