12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package yp
- import (
- "encoding/json"
- "net/http"
- "github.com/owncast/owncast/core/data"
- "github.com/owncast/owncast/models"
- "github.com/owncast/owncast/utils"
- log "github.com/sirupsen/logrus"
- )
- type ypDetailsResponse struct {
- LastConnectTime *utils.NullTime `json:"lastConnectTime"`
- Name string `json:"name"`
- Description string `json:"description"`
- StreamTitle string `json:"streamTitle,omitempty"`
- Logo string `json:"logo"`
- Tags []string `json:"tags"`
- Social []models.SocialHandle `json:"social"`
- ViewerCount int `json:"viewerCount"`
- OverallMaxViewerCount int `json:"overallMaxViewerCount"`
- SessionMaxViewerCount int `json:"sessionMaxViewerCount"`
- NSFW bool `json:"nsfw"`
- Online bool `json:"online"`
- }
- // GetYPResponse gets the status of the server for YP purposes.
- func GetYPResponse(w http.ResponseWriter, r *http.Request) {
- if !data.GetDirectoryEnabled() {
- w.WriteHeader(http.StatusNotFound)
- return
- }
- status := getStatus()
- streamTitle := data.GetStreamTitle()
- response := ypDetailsResponse{
- Name: data.GetServerName(),
- Description: data.GetServerSummary(),
- StreamTitle: streamTitle,
- Logo: "/logo",
- NSFW: data.GetNSFW(),
- Tags: data.GetServerMetadataTags(),
- Online: status.Online,
- ViewerCount: status.ViewerCount,
- OverallMaxViewerCount: status.OverallMaxViewerCount,
- SessionMaxViewerCount: status.SessionMaxViewerCount,
- LastConnectTime: status.LastConnectTime,
- Social: data.GetSocialHandles(),
- }
- w.Header().Set("Content-Type", "application/json")
- err := json.NewEncoder(w).Encode(response)
- if err != nil {
- log.Errorln(err)
- }
- }
|