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.
76 lines
2.6 KiB
76 lines
2.6 KiB
package controllers |
|
|
|
import ( |
|
"encoding/json" |
|
"net/http" |
|
|
|
"github.com/owncast/owncast/config" |
|
"github.com/owncast/owncast/core/data" |
|
"github.com/owncast/owncast/models" |
|
"github.com/owncast/owncast/router/middleware" |
|
"github.com/owncast/owncast/utils" |
|
) |
|
|
|
type webConfigResponse struct { |
|
Name string `json:"name"` |
|
Summary string `json:"summary"` |
|
Logo string `json:"logo"` |
|
Tags []string `json:"tags"` |
|
Version string `json:"version"` |
|
NSFW bool `json:"nsfw"` |
|
ExtraPageContent string `json:"extraPageContent"` |
|
StreamTitle string `json:"streamTitle,omitempty"` // What's going on with the current stream |
|
SocialHandles []models.SocialHandle `json:"socialHandles"` |
|
ChatDisabled bool `json:"chatDisabled"` |
|
ExternalActions []models.ExternalAction `json:"externalActions"` |
|
CustomStyles string `json:"customStyles"` |
|
} |
|
|
|
// GetWebConfig gets the status of the server. |
|
func GetWebConfig(w http.ResponseWriter, r *http.Request) { |
|
middleware.EnableCors(&w) |
|
w.Header().Set("Content-Type", "application/json") |
|
|
|
pageContent := utils.RenderPageContentMarkdown(data.GetExtraPageBodyContent()) |
|
socialHandles := data.GetSocialHandles() |
|
for i, handle := range socialHandles { |
|
platform := models.GetSocialHandle(handle.Platform) |
|
if platform != nil { |
|
handle.Icon = platform.Icon |
|
socialHandles[i] = handle |
|
} |
|
} |
|
|
|
serverSummary := data.GetServerSummary() |
|
serverSummary = utils.RenderPageContentMarkdown(serverSummary) |
|
|
|
configuration := webConfigResponse{ |
|
Name: data.GetServerName(), |
|
Summary: serverSummary, |
|
Logo: "/logo", |
|
Tags: data.GetServerMetadataTags(), |
|
Version: config.GetReleaseString(), |
|
NSFW: data.GetNSFW(), |
|
ExtraPageContent: pageContent, |
|
StreamTitle: data.GetStreamTitle(), |
|
SocialHandles: socialHandles, |
|
ChatDisabled: data.GetChatDisabled(), |
|
ExternalActions: data.GetExternalActions(), |
|
CustomStyles: data.GetCustomStyles(), |
|
} |
|
|
|
if err := json.NewEncoder(w).Encode(configuration); err != nil { |
|
BadRequestHandler(w, err) |
|
} |
|
} |
|
|
|
// GetAllSocialPlatforms will return a list of all social platform types. |
|
func GetAllSocialPlatforms(w http.ResponseWriter, r *http.Request) { |
|
middleware.EnableCors(&w) |
|
w.Header().Set("Content-Type", "application/json") |
|
|
|
platforms := models.GetAllSocialHandles() |
|
if err := json.NewEncoder(w).Encode(platforms); err != nil { |
|
InternalErrorHandler(w, err) |
|
} |
|
}
|
|
|