You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
package controllers |
|
|
|
import ( |
|
"encoding/json" |
|
"net/http" |
|
"time" |
|
|
|
"github.com/owncast/owncast/core" |
|
"github.com/owncast/owncast/core/data" |
|
"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) { |
|
response := getStatusResponse() |
|
|
|
w.Header().Set("Content-Type", "application/json") |
|
middleware.DisableCache(w) |
|
|
|
if err := json.NewEncoder(w).Encode(response); err != nil { |
|
InternalErrorHandler(w, err) |
|
} |
|
} |
|
|
|
func getStatusResponse() webStatusResponse { |
|
status := core.GetStatus() |
|
response := webStatusResponse{ |
|
Online: status.Online, |
|
ServerTime: time.Now(), |
|
LastConnectTime: status.LastConnectTime, |
|
LastDisconnectTime: status.LastDisconnectTime, |
|
VersionNumber: status.VersionNumber, |
|
StreamTitle: status.StreamTitle, |
|
} |
|
if !data.GetHideViewerCount() { |
|
response.ViewerCount = status.ViewerCount |
|
} |
|
return response |
|
} |
|
|
|
type webStatusResponse struct { |
|
ServerTime time.Time `json:"serverTime"` |
|
LastConnectTime *utils.NullTime `json:"lastConnectTime"` |
|
LastDisconnectTime *utils.NullTime `json:"lastDisconnectTime"` |
|
|
|
VersionNumber string `json:"versionNumber"` |
|
StreamTitle string `json:"streamTitle"` |
|
ViewerCount int `json:"viewerCount,omitempty"` |
|
Online bool `json:"online"` |
|
}
|
|
|