2020-04-20 21:02:05 -07:00
|
|
|
package builder
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
2022-01-02 14:57:10 +02:00
|
|
|
"github.com/mxpv/podsync/pkg/feed"
|
2020-04-20 21:02:05 -07:00
|
|
|
"github.com/pkg/errors"
|
|
|
|
|
|
|
|
|
|
"github.com/mxpv/podsync/pkg/model"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Builder interface {
|
2022-01-02 14:57:10 +02:00
|
|
|
Build(ctx context.Context, cfg *feed.Config) (*model.Feed, error)
|
2020-04-20 21:02:05 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func New(ctx context.Context, provider model.Provider, key string) (Builder, error) {
|
|
|
|
|
switch provider {
|
|
|
|
|
case model.ProviderYoutube:
|
|
|
|
|
return NewYouTubeBuilder(key)
|
|
|
|
|
case model.ProviderVimeo:
|
|
|
|
|
return NewVimeoBuilder(ctx, key)
|
2021-10-02 21:32:46 -04:00
|
|
|
case model.ProviderSoundcloud:
|
|
|
|
|
return NewSoundcloudBuilder()
|
2020-04-20 21:02:05 -07:00
|
|
|
default:
|
|
|
|
|
return nil, errors.Errorf("unsupported provider %q", provider)
|
|
|
|
|
}
|
|
|
|
|
}
|