status.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/owncast/owncast/core"
  6. "github.com/owncast/owncast/router/middleware"
  7. "github.com/owncast/owncast/utils"
  8. )
  9. // GetStatus gets the status of the server.
  10. func GetStatus(w http.ResponseWriter, r *http.Request) {
  11. middleware.EnableCors(w)
  12. status := core.GetStatus()
  13. response := webStatusResponse{
  14. Online: status.Online,
  15. ViewerCount: status.ViewerCount,
  16. LastConnectTime: status.LastConnectTime,
  17. LastDisconnectTime: status.LastDisconnectTime,
  18. VersionNumber: status.VersionNumber,
  19. StreamTitle: status.StreamTitle,
  20. }
  21. w.Header().Set("Content-Type", "application/json")
  22. middleware.DisableCache(w)
  23. if err := json.NewEncoder(w).Encode(response); err != nil {
  24. InternalErrorHandler(w, err)
  25. }
  26. }
  27. type webStatusResponse struct {
  28. Online bool `json:"online"`
  29. ViewerCount int `json:"viewerCount"`
  30. LastConnectTime *utils.NullTime `json:"lastConnectTime"`
  31. LastDisconnectTime *utils.NullTime `json:"lastDisconnectTime"`
  32. VersionNumber string `json:"versionNumber"`
  33. StreamTitle string `json:"streamTitle"`
  34. }