From 86876a1c118121808e38943866030df811c4c6e5 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Mon, 25 Apr 2022 18:07:47 +0800 Subject: [PATCH] feat: select encoding for decompressing zip file --- pkg/task/decompress.go | 14 ++++++++------ pkg/task/decompress_test.go | 4 ++-- service/explorer/objects.go | 7 ++++--- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/pkg/task/decompress.go b/pkg/task/decompress.go index ce00278..0db2ec5 100644 --- a/pkg/task/decompress.go +++ b/pkg/task/decompress.go @@ -20,8 +20,9 @@ type DecompressTask struct { // DecompressProps 压缩任务属性 type DecompressProps struct { - Src string `json:"src"` - Dst string `json:"dst"` + Src string `json:"src"` + Dst string `json:"dst"` + Encoding string `json:"encoding"` } // Props 获取任务属性 @@ -82,7 +83,7 @@ func (job *DecompressTask) Do() { job.TaskModel.SetProgress(DecompressingProgress) - err = fs.Decompress(context.Background(), job.TaskProps.Src, job.TaskProps.Dst, "") + err = fs.Decompress(context.Background(), job.TaskProps.Src, job.TaskProps.Dst, job.TaskProps.Encoding) if err != nil { job.SetErrorMsg("解压缩失败", err) return @@ -91,12 +92,13 @@ func (job *DecompressTask) Do() { } // NewDecompressTask 新建压缩任务 -func NewDecompressTask(user *model.User, src, dst string) (Job, error) { +func NewDecompressTask(user *model.User, src, dst, encoding string) (Job, error) { newTask := &DecompressTask{ User: user, TaskProps: DecompressProps{ - Src: src, - Dst: dst, + Src: src, + Dst: dst, + Encoding: encoding, }, } diff --git a/pkg/task/decompress_test.go b/pkg/task/decompress_test.go index 33887fc..75b7cfe 100644 --- a/pkg/task/decompress_test.go +++ b/pkg/task/decompress_test.go @@ -99,7 +99,7 @@ func TestNewDecompressTask(t *testing.T) { mock.ExpectBegin() mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) mock.ExpectCommit() - job, err := NewDecompressTask(&model.User{}, "/", "/") + job, err := NewDecompressTask(&model.User{}, "/", "/", "utf-8") asserts.NoError(mock.ExpectationsWereMet()) asserts.NotNil(job) asserts.NoError(err) @@ -110,7 +110,7 @@ func TestNewDecompressTask(t *testing.T) { mock.ExpectBegin() mock.ExpectExec("INSERT(.+)").WillReturnError(errors.New("error")) mock.ExpectRollback() - job, err := NewDecompressTask(&model.User{}, "/", "/") + job, err := NewDecompressTask(&model.User{}, "/", "/", "utf-8") asserts.NoError(mock.ExpectationsWereMet()) asserts.Nil(job) asserts.Error(err) diff --git a/service/explorer/objects.go b/service/explorer/objects.go index d5adbc4..d140c32 100644 --- a/service/explorer/objects.go +++ b/service/explorer/objects.go @@ -55,8 +55,9 @@ type ItemCompressService struct { // ItemDecompressService 文件解压缩任务服务 type ItemDecompressService struct { - Src string `json:"src"` - Dst string `json:"dst" binding:"required,min=1,max=65535"` + Src string `json:"src"` + Dst string `json:"dst" binding:"required,min=1,max=65535"` + Encoding string `json:"encoding"` } // ItemPropertyService 获取对象属性服务 @@ -143,7 +144,7 @@ func (service *ItemDecompressService) CreateDecompressTask(c *gin.Context) seria } // 创建任务 - job, err := task.NewDecompressTask(fs.User, service.Src, service.Dst) + job, err := task.NewDecompressTask(fs.User, service.Src, service.Dst, service.Encoding) if err != nil { return serializer.Err(serializer.CodeNotSet, "任务创建失败", err) }