This commit is contained in:
@@ -24,6 +24,7 @@ const (
|
||||
featureEndCredits = "end_credits"
|
||||
featureSeasonalThemes = "seasonal_themes"
|
||||
featureSeasonalDecorations = "seasonal_decorations"
|
||||
featureGenreBrowser = "genre_browser"
|
||||
)
|
||||
|
||||
type featureDefinition struct {
|
||||
@@ -117,6 +118,12 @@ var featureCatalogue = []featureDefinition{
|
||||
DefaultEnabled: true, MinimumProtocol: 1, Capability: "seasonal_decorations_v1",
|
||||
Recovery: "Takes effect on the next status poll; the launcher simply stops drawing them.",
|
||||
},
|
||||
{
|
||||
Key: featureGenreBrowser, Name: "Genre browser", Area: "Presentation",
|
||||
Description: "Show the full genre browser at the top of Movies and TV Shows.",
|
||||
DefaultEnabled: false, MinimumProtocol: 1, Capability: "genre_browser_v1",
|
||||
Recovery: "Takes effect on the next status poll; the browser is hidden when off.",
|
||||
},
|
||||
{
|
||||
Key: featureInstallPermission, Name: "Ask TVs for install permission", Area: "Setup",
|
||||
Description: "Ask a signed-in TV that cannot install its own updates to grant the " +
|
||||
|
||||
@@ -47,6 +47,20 @@ func TestHEVCDirectPlayIsVisibleAndServerControllable(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenreBrowserIsServerControlledAndOffByDefault(t *testing.T) {
|
||||
definition, ok := knownFeature(featureGenreBrowser)
|
||||
if !ok || definition.Capability != "genre_browser_v1" {
|
||||
t.Fatalf("genre browser feature definition = %+v, found=%v", definition, ok)
|
||||
}
|
||||
if got := evaluateFeature(store.DefaultFeaturePolicy(), definition, 1); got.Enabled {
|
||||
t.Fatalf("genre browser default = %+v, want disabled", got)
|
||||
}
|
||||
enabled := store.FeaturePolicy{Overrides: map[string]bool{featureGenreBrowser: true}}
|
||||
if got := evaluateFeature(enabled, definition, 1); !got.Enabled || got.Source != "override" {
|
||||
t.Fatalf("genre browser override = %+v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestClientCapabilitiesAreNormalizedAndBounded(t *testing.T) {
|
||||
req := httptest.NewRequest(http.MethodGet, "/v1/status", nil)
|
||||
req.Header.Set("X-Memby-Capabilities", " Sonarr_Preroll_V1,server_features_v1,sonarr_preroll_v1,"+
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/ponzischeme89/memby/server/internal/buildinfo"
|
||||
"github.com/ponzischeme89/memby/server/internal/store"
|
||||
)
|
||||
|
||||
@@ -119,6 +120,7 @@ func (s *Server) handleServiceStatus(w http.ResponseWriter, r *http.Request, ses
|
||||
"compatibilityMessage": compatibilityMessage,
|
||||
"clientVersion": clientVersion(r),
|
||||
"clientProtocol": clientProtocol(r),
|
||||
"gatewayVersion": buildinfo.Version(),
|
||||
"serverProtocol": ProtocolVersion,
|
||||
"featureSchemaVersion": featureSchemaVersion,
|
||||
"featureRevision": featurePolicy.Revision,
|
||||
|
||||
Reference in New Issue
Block a user