104 lines
2.1 KiB
Go
104 lines
2.1 KiB
Go
package mq
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
"hpds_annotation/global"
|
|
"hpds_annotation/internal/proto"
|
|
"hpds_annotation/pkg/utils"
|
|
"net/http"
|
|
"os"
|
|
"path"
|
|
)
|
|
|
|
func GetList(req proto.ListRequest) (rsp *proto.BaseResponse, err error) {
|
|
rsp = new(proto.BaseResponse)
|
|
|
|
var (
|
|
files []os.DirEntry
|
|
list []proto.FileBaseInfo
|
|
)
|
|
files, err = os.ReadDir(req.Path)
|
|
if err != nil {
|
|
goto ReturnPoint
|
|
}
|
|
list = make([]proto.FileBaseInfo, len(files))
|
|
for k, v := range files {
|
|
info, _ := v.Info()
|
|
item := proto.FileBaseInfo{
|
|
Name: v.Name(),
|
|
Path: path.Join(req.Path, v.Name()),
|
|
IsDir: v.IsDir(),
|
|
Size: info.Size(),
|
|
ModTime: info.ModTime().Unix(),
|
|
}
|
|
list[k] = item
|
|
}
|
|
|
|
rsp.Code = http.StatusOK
|
|
rsp.Status = http.StatusText(http.StatusOK)
|
|
rsp.Message = "成功"
|
|
rsp.Data = list
|
|
rsp.Err = err
|
|
return rsp, err
|
|
ReturnPoint:
|
|
if err != nil {
|
|
rsp.Code = http.StatusInternalServerError
|
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
|
rsp.Err = err
|
|
rsp.Message = "失败"
|
|
}
|
|
return rsp, err
|
|
}
|
|
|
|
func GetFileInfo(req proto.ListRequest) (rsp *proto.BaseResponse, err error) {
|
|
rsp = new(proto.BaseResponse)
|
|
var (
|
|
fileInfo os.FileInfo
|
|
b, ok bool
|
|
buff []byte
|
|
)
|
|
res := new(proto.FileContent)
|
|
fileInfo, err = os.Stat(req.Path)
|
|
if err != nil {
|
|
goto ReturnPoint
|
|
}
|
|
if fileInfo.IsDir() {
|
|
err = fmt.Errorf("不能获取文件夹的详细信息")
|
|
goto ReturnPoint
|
|
}
|
|
buff = utils.ReadFile(req.Path)
|
|
res.Name = fileInfo.Name()
|
|
res.IsDir = false
|
|
res.Path = req.Path
|
|
res.Size = fileInfo.Size()
|
|
res.ModTime = fileInfo.ModTime().Unix()
|
|
res.ContentBase = base64.StdEncoding.EncodeToString(buff)
|
|
b, ok = global.FileLabelList[req.Path]
|
|
if ok {
|
|
if b {
|
|
res.LabelStatus = 1
|
|
} else {
|
|
res.LabelStatus = 2
|
|
}
|
|
} else {
|
|
res.LabelStatus = 0
|
|
}
|
|
|
|
rsp.Code = http.StatusOK
|
|
rsp.Status = http.StatusText(http.StatusOK)
|
|
rsp.Message = "成功"
|
|
rsp.Data = res
|
|
rsp.Err = err
|
|
return rsp, err
|
|
|
|
ReturnPoint:
|
|
if err != nil {
|
|
rsp.Code = http.StatusInternalServerError
|
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
|
rsp.Err = err
|
|
rsp.Message = "失败"
|
|
}
|
|
return rsp, err
|
|
}
|