fix: serialize task info
This commit is contained in:
parent
786e44d1d2
commit
f54418bdae
@ -59,8 +59,9 @@ outer:
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
m.tsk.SetStatus("aria2 download completed, waiting for transfer")
|
m.tsk.SetStatus("aria2 download completed, transferring")
|
||||||
<-m.finish
|
<-m.finish
|
||||||
|
m.tsk.SetStatus("completed")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +89,8 @@ func (m *Monitor) Update() (bool, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
downloaded = 0
|
downloaded = 0
|
||||||
}
|
}
|
||||||
m.tsk.SetProgress(int(float64(downloaded) / float64(total)))
|
progress := float64(downloaded) / float64(total) * 100
|
||||||
|
m.tsk.SetProgress(int(progress))
|
||||||
switch info.Status {
|
switch info.Status {
|
||||||
case "complete":
|
case "complete":
|
||||||
err := m.Complete()
|
err := m.Complete()
|
||||||
|
@ -43,10 +43,25 @@ func (t *Task[K]) SetProgress(percentage int) {
|
|||||||
t.progress = percentage
|
t.progress = percentage
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Task[K]) GetState() string {
|
func (t Task[K]) GetProgress() int {
|
||||||
|
return t.progress
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t Task[K]) GetState() string {
|
||||||
return t.state
|
return t.state
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t Task[K]) GetStatus() string {
|
||||||
|
return t.status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t Task[K]) GetErrMsg() string {
|
||||||
|
if t.Error == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return t.Error.Error()
|
||||||
|
}
|
||||||
|
|
||||||
func (t *Task[K]) run() {
|
func (t *Task[K]) run() {
|
||||||
t.state = RUNNING
|
t.state = RUNNING
|
||||||
defer func() {
|
defer func() {
|
||||||
|
@ -3,17 +3,65 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"github.com/alist-org/alist/v3/internal/aria2"
|
"github.com/alist-org/alist/v3/internal/aria2"
|
||||||
"github.com/alist-org/alist/v3/internal/fs"
|
"github.com/alist-org/alist/v3/internal/fs"
|
||||||
|
"github.com/alist-org/alist/v3/pkg/task"
|
||||||
"github.com/alist-org/alist/v3/server/common"
|
"github.com/alist-org/alist/v3/server/common"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type TaskInfo struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Progress int `json:"progress"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTaskInfoUint(task *task.Task[uint64]) TaskInfo {
|
||||||
|
return TaskInfo{
|
||||||
|
ID: strconv.FormatUint(task.ID, 10),
|
||||||
|
Name: task.Name,
|
||||||
|
State: task.GetState(),
|
||||||
|
Status: task.GetStatus(),
|
||||||
|
Progress: task.GetProgress(),
|
||||||
|
Error: task.Error.Error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTaskInfoStr(task *task.Task[string]) TaskInfo {
|
||||||
|
return TaskInfo{
|
||||||
|
ID: task.ID,
|
||||||
|
Name: task.Name,
|
||||||
|
State: task.GetState(),
|
||||||
|
Status: task.GetStatus(),
|
||||||
|
Progress: task.GetProgress(),
|
||||||
|
Error: task.GetErrMsg(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTaskInfosUint(tasks []*task.Task[uint64]) []TaskInfo {
|
||||||
|
var infos []TaskInfo
|
||||||
|
for _, t := range tasks {
|
||||||
|
infos = append(infos, getTaskInfoUint(t))
|
||||||
|
}
|
||||||
|
return infos
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTaskInfosStr(tasks []*task.Task[string]) []TaskInfo {
|
||||||
|
var infos []TaskInfo
|
||||||
|
for _, t := range tasks {
|
||||||
|
infos = append(infos, getTaskInfoStr(t))
|
||||||
|
}
|
||||||
|
return infos
|
||||||
|
}
|
||||||
|
|
||||||
func UndoneDownTask(c *gin.Context) {
|
func UndoneDownTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, aria2.DownTaskManager.ListUndone())
|
common.SuccessResp(c, getTaskInfosStr(aria2.DownTaskManager.ListUndone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func DoneDownTask(c *gin.Context) {
|
func DoneDownTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, aria2.DownTaskManager.ListDone())
|
common.SuccessResp(c, getTaskInfosStr(aria2.DownTaskManager.ListDone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func CancelDownTask(c *gin.Context) {
|
func CancelDownTask(c *gin.Context) {
|
||||||
@ -26,11 +74,11 @@ func CancelDownTask(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UndoneTransferTask(c *gin.Context) {
|
func UndoneTransferTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, aria2.TransferTaskManager.ListUndone())
|
common.SuccessResp(c, getTaskInfosUint(aria2.TransferTaskManager.ListUndone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func DoneTransferTask(c *gin.Context) {
|
func DoneTransferTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, aria2.TransferTaskManager.ListDone())
|
common.SuccessResp(c, getTaskInfosUint(aria2.TransferTaskManager.ListDone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func CancelTransferTask(c *gin.Context) {
|
func CancelTransferTask(c *gin.Context) {
|
||||||
@ -48,11 +96,11 @@ func CancelTransferTask(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UndoneUploadTask(c *gin.Context) {
|
func UndoneUploadTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, fs.UploadTaskManager.ListUndone())
|
common.SuccessResp(c, getTaskInfosUint(fs.UploadTaskManager.ListUndone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func DoneUploadTask(c *gin.Context) {
|
func DoneUploadTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, fs.UploadTaskManager.ListDone())
|
common.SuccessResp(c, getTaskInfosUint(fs.UploadTaskManager.ListDone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func CancelUploadTask(c *gin.Context) {
|
func CancelUploadTask(c *gin.Context) {
|
||||||
@ -70,11 +118,11 @@ func CancelUploadTask(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UndoneCopyTask(c *gin.Context) {
|
func UndoneCopyTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, fs.CopyTaskManager.ListUndone())
|
common.SuccessResp(c, getTaskInfosUint(fs.CopyTaskManager.ListUndone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func DoneCopyTask(c *gin.Context) {
|
func DoneCopyTask(c *gin.Context) {
|
||||||
common.SuccessResp(c, fs.CopyTaskManager.ListDone())
|
common.SuccessResp(c, getTaskInfosUint(fs.CopyTaskManager.ListDone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func CancelCopyTask(c *gin.Context) {
|
func CancelCopyTask(c *gin.Context) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user