mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-04 15:49:49 +00:00
50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package download
|
|
|
|
import (
|
|
gonanoid "github.com/matoous/go-nanoid/v2"
|
|
"github.com/monkeyWie/gopeed/internal/fetcher"
|
|
"github.com/monkeyWie/gopeed/pkg/base"
|
|
"github.com/monkeyWie/gopeed/pkg/util"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type Task struct {
|
|
ID string `json:"id"`
|
|
Res *base.Resource `json:"res"`
|
|
Opts *base.Options `json:"opts"`
|
|
Status base.Status `json:"status"`
|
|
Progress *Progress `json:"progress"`
|
|
Size int64 `json:"size"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
|
|
fetcherBuilder fetcher.FetcherBuilder
|
|
fetcher fetcher.Fetcher
|
|
timer *util.Timer
|
|
lock *sync.Mutex
|
|
}
|
|
|
|
func NewTask() *Task {
|
|
id, err := gonanoid.New()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return &Task{
|
|
ID: id,
|
|
Status: base.DownloadStatusReady,
|
|
CreatedAt: time.Now(),
|
|
}
|
|
}
|
|
|
|
func (t *Task) clone() *Task {
|
|
return &Task{
|
|
ID: t.ID,
|
|
Res: t.Res,
|
|
Opts: t.Opts,
|
|
Status: t.Status,
|
|
Progress: t.Progress,
|
|
Size: t.Size,
|
|
CreatedAt: t.CreatedAt,
|
|
}
|
|
}
|