getter.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package app
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/zu1k/proxypool/internal/cache"
  6. "github.com/ghodss/yaml"
  7. "github.com/zu1k/proxypool/config"
  8. "github.com/zu1k/proxypool/pkg/getter"
  9. )
  10. var Getters = make([]getter.Getter, 0)
  11. func InitConfigAndGetters(path string) (err error) {
  12. err = config.Parse(path)
  13. if err != nil {
  14. return
  15. }
  16. if s := config.Config.SourceFiles; len(s) == 0 {
  17. return errors.New("no sources")
  18. } else {
  19. initGetters(s)
  20. }
  21. return
  22. }
  23. func initGetters(sourceFiles []string) {
  24. Getters = make([]getter.Getter, 0)
  25. for _, path := range sourceFiles {
  26. data, err := config.ReadFile(path)
  27. if err != nil {
  28. fmt.Errorf("Init SourceFile Error: %s\n", err.Error())
  29. continue
  30. }
  31. sourceList := make([]config.Source, 0)
  32. err = yaml.Unmarshal(data, &sourceList)
  33. if err != nil {
  34. fmt.Errorf("Init SourceFile Error: %s\n", err.Error())
  35. continue
  36. }
  37. for _, source := range sourceList {
  38. g, err := getter.NewGetter(source.Type, source.Options)
  39. if err == nil && g != nil {
  40. Getters = append(Getters, g)
  41. fmt.Println("init getter:", source.Type, source.Options)
  42. }
  43. }
  44. }
  45. fmt.Println("Getter count:", len(Getters))
  46. cache.GettersCount = len(Getters)
  47. }