1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-12 02:40:42 +00:00
v2fly/app/subscription/documentfetcher/fetcher.go
2023-11-26 10:55:27 +00:00

33 lines
785 B
Go

package documentfetcher
import (
"context"
"github.com/v2fly/v2ray-core/v5/app/subscription"
)
//go:generate go run github.com/v2fly/v2ray-core/v5/common/errors/errorgen
type FetcherOptions interface{}
type Fetcher interface {
DownloadDocument(ctx context.Context, source *subscription.ImportSource, opts ...FetcherOptions) ([]byte, error)
}
var knownFetcher = make(map[string]Fetcher)
func RegisterFetcher(name string, fetcher Fetcher) error {
if _, found := knownFetcher[name]; found {
return newError("fetcher ", name, " already registered")
}
knownFetcher[name] = fetcher
return nil
}
func GetFetcher(name string) (Fetcher, error) {
if fetcher, found := knownFetcher[name]; found {
return fetcher, nil
}
return nil, newError("fetcher ", name, " not found")
}