(ctx context.Context, domain string, session *subscraping.Session)
| 43 | } |
| 44 | |
| 45 | func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Session) <-chan subscraping.Result { |
| 46 | results := make(chan subscraping.Result) |
| 47 | s.errors = 0 |
| 48 | s.results = 0 |
| 49 | s.requests = 0 |
| 50 | |
| 51 | go func() { |
| 52 | defer func(startTime time.Time) { |
| 53 | s.timeTaken = time.Since(startTime) |
| 54 | close(results) |
| 55 | }(time.Now()) |
| 56 | |
| 57 | randomApiKey := subscraping.PickRandom(s.apiKeys, s.Name()) |
| 58 | if randomApiKey == "" { |
| 59 | s.skipped = true |
| 60 | return |
| 61 | } |
| 62 | |
| 63 | headers := map[string]string{"Content-Type": "application/json", "X-Api-Key": randomApiKey} |
| 64 | |
| 65 | page := 1 |
| 66 | count := 1000 |
| 67 | for { |
| 68 | select { |
| 69 | case <-ctx.Done(): |
| 70 | return |
| 71 | default: |
| 72 | } |
| 73 | var resp *http.Response |
| 74 | var err error |
| 75 | |
| 76 | requestBody, _ := json.Marshal(map[string]interface{}{"domain": domain, "page_request": map[string]int{"page": page, "count": count}}) |
| 77 | s.requests++ |
| 78 | resp, err = session.Post(ctx, "https://windvane.lichoin.com/trpc.backendhub.public.WindvaneService/ListSubDomain", |
| 79 | "", headers, bytes.NewReader(requestBody)) |
| 80 | |
| 81 | if err != nil { |
| 82 | results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err} |
| 83 | s.errors++ |
| 84 | session.DiscardHTTPResponse(resp) |
| 85 | return |
| 86 | } |
| 87 | |
| 88 | defer session.DiscardHTTPResponse(resp) |
| 89 | |
| 90 | var windvaneResponse response |
| 91 | err = json.NewDecoder(resp.Body).Decode(&windvaneResponse) |
| 92 | if err != nil { |
| 93 | results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err} |
| 94 | s.errors++ |
| 95 | session.DiscardHTTPResponse(resp) |
| 96 | return |
| 97 | } |
| 98 | |
| 99 | for _, record := range windvaneResponse.Data.List { |
| 100 | select { |
| 101 | case <-ctx.Done(): |
| 102 | return |
nothing calls this directly
no test coverage detected