1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
mxpv-podsync/pkg/feed/common.go
Maksym Pavlenko e0290afa11 Refactor updater
2020-03-07 17:25:55 -08:00

44 lines
890 B
Go

package feed
import (
"context"
"github.com/pkg/errors"
"github.com/mxpv/podsync/pkg/config"
"github.com/mxpv/podsync/pkg/link"
"github.com/mxpv/podsync/pkg/model"
)
var (
ErrNotFound = errors.New("resource not found")
ErrQuotaExceeded = errors.New("query limit is exceeded")
)
type Builder interface {
Build(ctx context.Context, cfg *config.Feed) (*model.Feed, error)
}
func New(ctx context.Context, cfg *config.Feed, tokens config.Tokens) (Builder, error) {
var (
provider Builder
err error
)
info, err := link.Parse(cfg.URL)
if err != nil {
return nil, err
}
switch info.Provider {
case link.ProviderYoutube:
provider, err = NewYouTubeBuilder(tokens.YouTube)
case link.ProviderVimeo:
provider, err = NewVimeoBuilder(ctx, tokens.Vimeo)
default:
return nil, errors.Errorf("unsupported provider %q", info.Provider)
}
return provider, err
}