mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
583 B
Go
23 lines
583 B
Go
package provider
|
|
|
|
type AggregationProviderInterface interface {
|
|
ExtractProvider(OAuth2Provider) (ProviderInterface, error)
|
|
Provider() OAuth2Provider
|
|
Providers() []OAuth2Provider
|
|
}
|
|
|
|
func ExtractProviders(p AggregationProviderInterface, providers ...OAuth2Provider) ([]ProviderInterface, error) {
|
|
if len(providers) == 0 {
|
|
providers = p.Providers()
|
|
}
|
|
var pi []ProviderInterface = make([]ProviderInterface, len(providers))
|
|
for i, provider := range providers {
|
|
pi2, err := p.ExtractProvider(provider)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
pi[i] = pi2
|
|
}
|
|
return pi, nil
|
|
}
|