fix: extension task missing fields (#850)

This commit is contained in:
Levi authored and GitHub committed 2024-12-23 01:58:29 +08:00
1 parent 2cb93a03e2
commit 8b61343aef
1 file changed
+9 -13
+9 -13
View File
@@ -702,38 +702,34 @@ type OnDoneContext struct {
Task *Task `json:"task"` Task *Task `json:"task"`
} }
// ExtensionTask is a wrapper of Task, it's used to interact with extension scripts.
// Avoid extension scripts modifying task directly, use ExtensionTask to encapsulate task,
// only some fields can be modified, such as request info.
type ExtensionTask struct { type ExtensionTask struct {
download *Downloader download *Downloader
task *Task
Meta *ExtensionTaskMeta `json:"meta"` *Task
}
// ExtensionTaskMeta restricts extension scripts to only modify request info
type ExtensionTaskMeta struct {
Req *base.Request `json:"req"`
} }
func NewExtensionTask(download *Downloader, task *Task) *ExtensionTask { func NewExtensionTask(download *Downloader, task *Task) *ExtensionTask {
// restricts extension scripts to only modify request info
newTask := task.clone() newTask := task.clone()
newTask.Meta.Req = task.Meta.Req
return &ExtensionTask{ return &ExtensionTask{
task: newTask,
download: download, download: download,
Meta: &ExtensionTaskMeta{ Task: newTask,
Req: task.Meta.Req,
},
} }
} }
func (t *ExtensionTask) Continue() error { func (t *ExtensionTask) Continue() error {
return t.download.Continue(&TaskFilter{ return t.download.Continue(&TaskFilter{
IDs: []string{t.task.ID}, IDs: []string{t.ID},
}) })
} }
func (t *ExtensionTask) Pause() error { func (t *ExtensionTask) Pause() error {
return t.download.Pause(&TaskFilter{ return t.download.Pause(&TaskFilter{
IDs: []string{t.task.ID}, IDs: []string{t.ID},
}) })
} }