]> Sergey Matveev's repositories - btrtrc.git/blob - tests/issue-930/server.go
Add issue-930 demo
[btrtrc.git] / tests / issue-930 / server.go
1 package main
2
3 import (
4         "fmt"
5         "net/http"
6         "time"
7
8         "github.com/anacrolix/torrent/metainfo"
9 )
10
11 func server() {
12         go func() {
13                 for range time.Tick(time.Second * 5) {
14                         for _, torrent := range client.Torrents() {
15                                 if torrent.Complete.Bool() {
16                                         fmt.Println("Dropping torrent", torrent.InfoHash().HexString())
17                                         torrent.Drop()
18                                 }
19                         }
20                 }
21         }()
22
23         mux := http.NewServeMux()
24         mux.HandleFunc("/torrent", func(w http.ResponseWriter, r *http.Request) {
25                 if index >= len(infoHashes) {
26                         w.Write([]byte("No more torrents to add"))
27                         return
28                 }
29
30                 infoHash := infoHashes[index]
31                 fmt.Println("Adding torrent", infoHash)
32
33                 t, _ := client.AddTorrentInfoHash(metainfo.NewHashFromHex(infoHash))
34                 go func() {
35                         <-t.GotInfo()
36                         fmt.Println("Download started for", infoHash)
37                         t.DownloadAll()
38                 }()
39                 index++
40
41                 w.Write([]byte("OK"))
42                 return
43         })
44
45         if err := http.ListenAndServe(":8080", mux); err != nil {
46                 panic(err)
47         }
48 }