Files
silo-server/internal/jellycompat/content_service.go
T

36 lines
2.4 KiB
Go

package jellycompat
import (
"context"
"net/url"
)
// ContentService provides catalog data for the compat layer.
type ContentService interface {
ListUserLibraries(ctx context.Context, session *Session) ([]upstreamUserLibrary, error)
BrowseItems(ctx context.Context, session *Session, params url.Values) (*upstreamBrowseResponse, error)
SearchItems(ctx context.Context, session *Session, query string, itemTypes []string, limit, offset int, libraryID *int) (*upstreamBrowseResponse, error)
GetItemDetail(ctx context.Context, session *Session, contentID string, libraryID *int) (*upstreamItemDetail, error)
ListSeasons(ctx context.Context, session *Session, seriesID string, libraryID *int) ([]upstreamSeason, error)
GetSeason(ctx context.Context, session *Session, seriesID string, seasonNumber int, libraryID *int) (*upstreamSeason, error)
ListEpisodes(ctx context.Context, session *Session, seriesID string, seasonNumber int, libraryID *int) ([]upstreamEpisode, error)
ListEpisodesBySeasonID(ctx context.Context, session *Session, seasonID string, libraryID *int) ([]upstreamEpisode, error)
ListItemFilters(ctx context.Context, session *Session, params url.Values) (*upstreamItemFiltersResponse, error)
}
// UserDataService provides favorites/progress/watched operations.
type UserDataService interface {
ListFavorites(ctx context.Context, session *Session, limit, offset int) ([]upstreamListItem, error)
ListFavoritesByMediaItems(ctx context.Context, session *Session, mediaItemIDs []string) (map[string]bool, error)
IsFavorite(ctx context.Context, session *Session, contentID string) (bool, error)
AddFavorite(ctx context.Context, session *Session, contentID string) error
RemoveFavorite(ctx context.Context, session *Session, contentID string) error
ListProgress(ctx context.Context, session *Session, status string, limit, offset int) ([]upstreamProgress, error)
ListProgressByMediaItems(ctx context.Context, session *Session, mediaItemIDs []string) (map[string]*upstreamProgress, error)
GetProgress(ctx context.Context, session *Session, contentID string) (*upstreamProgress, error)
MarkPlayed(ctx context.Context, session *Session, contentID string) error
MarkPlayedBatch(ctx context.Context, session *Session, contentIDs []string) error
MarkUnplayed(ctx context.Context, session *Session, contentID string) error
MarkUnplayedBatch(ctx context.Context, session *Session, contentIDs []string) error
}