fetcher.go 785 B

1234567891011121314151617181920212223242526272829303132
  1. package documentfetcher
  2. import (
  3. "context"
  4. "github.com/v2fly/v2ray-core/v5/app/subscription"
  5. )
  6. //go:generate go run github.com/v2fly/v2ray-core/v5/common/errors/errorgen
  7. type FetcherOptions interface{}
  8. type Fetcher interface {
  9. DownloadDocument(ctx context.Context, source *subscription.ImportSource, opts ...FetcherOptions) ([]byte, error)
  10. }
  11. var knownFetcher = make(map[string]Fetcher)
  12. func RegisterFetcher(name string, fetcher Fetcher) error {
  13. if _, found := knownFetcher[name]; found {
  14. return newError("fetcher ", name, " already registered")
  15. }
  16. knownFetcher[name] = fetcher
  17. return nil
  18. }
  19. func GetFetcher(name string) (Fetcher, error) {
  20. if fetcher, found := knownFetcher[name]; found {
  21. return fetcher, nil
  22. }
  23. return nil, newError("fetcher ", name, " not found")
  24. }