Files

45 lines
1.4 KiB
Go
Raw Permalink Normal View History

package requests
import (
"context"
"github.com/Silo-Server/silo-server/internal/access"
)
// accessEntitlements resolves a requester's effective playback-quality ceiling
// (account + profile caps combined) via the shared access resolver.
type accessEntitlements struct {
resolver *access.Resolver
}
// NewAccessEntitlements wraps the shared access resolver as an EntitlementResolver.
func NewAccessEntitlements(resolver *access.Resolver) EntitlementResolver {
return accessEntitlements{resolver: resolver}
}
func (e accessEntitlements) MaxPlaybackQuality(ctx context.Context, userID int, profileID string) (string, error) {
scope, err := e.resolveScope(ctx, userID, profileID)
if err != nil {
return "", err
}
return scope.MaxPlaybackQuality, nil
}
// MaxContentRating implements ContentRatingResolver so request discovery
// honors the profile's parental rating ceiling.
func (e accessEntitlements) MaxContentRating(ctx context.Context, userID int, profileID string) (string, error) {
scope, err := e.resolveScope(ctx, userID, profileID)
if err != nil {
return "", err
}
return scope.MaxContentRating, nil
}
func (e accessEntitlements) resolveScope(ctx context.Context, userID int, profileID string) (access.Scope, error) {
return e.resolver.Resolve(ctx, access.ResolveInput{
UserID: userID,
ProfileID: profileID,
SkipPINVerification: true,
})
}