]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/torrent/scrape.go
Merge branch 'http-proxying' into crawshaw
[btrtrc.git] / cmd / torrent / scrape.go
1 package main
2
3 import (
4         "context"
5         "fmt"
6         "net/url"
7
8         "github.com/anacrolix/torrent/tracker/udp"
9         "github.com/davecgh/go-spew/spew"
10
11         "github.com/anacrolix/torrent"
12 )
13
14 type ScrapeCmd struct {
15         Tracker    string `arg:"positional"`
16         InfoHashes []torrent.InfoHash
17 }
18
19 func scrape(flags ScrapeCmd) error {
20         trackerUrl, err := url.Parse(flags.Tracker)
21         if err != nil {
22                 return fmt.Errorf("parsing tracker url: %w", err)
23         }
24         cc, err := udp.NewConnClient(udp.NewConnClientOpts{
25                 Network: trackerUrl.Scheme,
26                 Host:    trackerUrl.Host,
27                 //Ipv6:    nil,
28                 //Logger:  log.Logger{},
29         })
30         if err != nil {
31                 return fmt.Errorf("creaing new udp tracker conn client: %w", err)
32         }
33         defer cc.Close()
34         var ihs []udp.InfoHash
35         for _, ih := range flags.InfoHashes {
36                 ihs = append(ihs, ih)
37         }
38         scrapeOut, err := cc.Client.Scrape(context.TODO(), ihs)
39         if err != nil {
40                 return fmt.Errorf("scraping: %w", err)
41         }
42         spew.Dump(scrapeOut)
43         return nil
44 }