Files
silo-server/internal/metadata/provider.go

42 lines
1.3 KiB
Go

package metadata
import "context"
// Provider is the base interface all providers implement.
type Provider interface {
Slug() string // Stable provider identifier.
Name() string // Human-readable provider name.
ForTypes() []string // Content types handled, e.g. ["movie", "series"].
}
// SearchProvider finds items by name/year or external IDs.
type SearchProvider interface {
Provider
Search(ctx context.Context, query SearchQuery) ([]SearchResult, error)
}
// MetadataProvider fetches full metadata for an identified item.
type MetadataProvider interface {
Provider
GetMetadata(ctx context.Context, req MetadataRequest) (*MetadataResult, error)
}
// PersonProvider fetches biographical details for a person entity.
type PersonProvider interface {
Provider
GetPersonDetail(ctx context.Context, req PersonDetailRequest) (*PersonDetailResult, error)
}
// ImageProvider fetches available images (posters, backdrops, logos).
type ImageProvider interface {
Provider
GetImages(ctx context.Context, req ImageRequest) ([]RemoteImage, error)
}
// EpisodeProvider fetches season/episode data for series.
type EpisodeProvider interface {
Provider
GetSeasons(ctx context.Context, req SeasonsRequest) ([]SeasonResult, error)
GetEpisodes(ctx context.Context, req EpisodesRequest) ([]EpisodeResult, error)
}