Adding a lot of js for the add torrent and add magnet link gui, started the torrent client backend.
This commit is contained in:
89
client.go
Normal file
89
client.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/anacrolix/torrent"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
)
|
||||
|
||||
// ClientError formats errors coming from the client.
|
||||
type ClientError struct {
|
||||
Type string
|
||||
Origin error
|
||||
}
|
||||
|
||||
func (clientError ClientError) Error() string {
|
||||
return fmt.Sprintf("Error %s: %s\n", clientError.Type, clientError.Origin)
|
||||
}
|
||||
|
||||
type ClientConfig struct {
|
||||
TorrentPath string
|
||||
Port int
|
||||
TorrentPort int
|
||||
Seed bool
|
||||
TCP bool
|
||||
MaxConnections int
|
||||
DownloadDir string
|
||||
}
|
||||
|
||||
// NewClientConfig creates a new default configuration.
|
||||
func NewClientConfig() ClientConfig {
|
||||
return ClientConfig{
|
||||
Port: 8080,
|
||||
TorrentPort: 50007,
|
||||
Seed: false,
|
||||
TCP: true,
|
||||
MaxConnections: 200,
|
||||
DownloadDir: "Download",
|
||||
}
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
Client *torrent.Client
|
||||
Torrent *torrent.Torrent
|
||||
Name string
|
||||
Progress int64
|
||||
Status string
|
||||
Seeds int
|
||||
Peers int
|
||||
DownloadSpeed int64
|
||||
UploadSpeed int64
|
||||
ETA time.Duration
|
||||
Ratio int
|
||||
Avail int
|
||||
Config ClientConfig
|
||||
}
|
||||
|
||||
func NewClient(cfg ClientConfig) (client Client, err error) {
|
||||
|
||||
var t *torrent.Torrent
|
||||
var c *torrent.Client
|
||||
|
||||
client.Config = cfg
|
||||
|
||||
//create the download directory
|
||||
_, err := os.Create(cfg.DownloadDir)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
c, err = torrent.NewClient(&torrent.Config{
|
||||
DataDir: cfg.DownloadDir,
|
||||
NoUpload: !cfg.Seed,
|
||||
Seed: cfg.Seed,
|
||||
DisableTCP: !cfg.TCP,
|
||||
ListenAddr: fmt.Sprintf("%d", cfg.TorrentPort),
|
||||
})
|
||||
if err != nil {
|
||||
return client, ClientError{Type: "creating torrent client", Origin: err}
|
||||
}
|
||||
|
||||
client.Client = c
|
||||
|
||||
//adding torrents
|
||||
|
||||
}
|
Reference in New Issue
Block a user