From 7c1ff194068a869bfef2a5ac67e1309034d672af Mon Sep 17 00:00:00 2001 From: Cian Date: Mon, 25 Jan 2021 14:46:20 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=20OneDrive=20=E7=AD=96=E7=95=A5=E5=A4=96?= =?UTF-8?q?=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/filesystem/file.go | 10 +++++----- pkg/filesystem/file_test.go | 2 +- pkg/filesystem/image.go | 2 +- service/explorer/file.go | 6 ++++++ 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/filesystem/file.go b/pkg/filesystem/file.go index efe5101..80456bd 100644 --- a/pkg/filesystem/file.go +++ b/pkg/filesystem/file.go @@ -101,7 +101,7 @@ func (fs *FileSystem) GetPhysicalFileContent(ctx context.Context, path string) ( // isText - 是否为文本文件,文本文件会忽略重定向,直接由 // 服务端拉取中转给用户,故会对文件大小进行限制 func (fs *FileSystem) Preview(ctx context.Context, id uint, isText bool) (*response.ContentResponse, error) { - err := fs.resetFileIDIfNotExist(ctx, id) + err := fs.ResetFileIDIfNotExist(ctx, id) if err != nil { return nil, err } @@ -160,7 +160,7 @@ func (fs *FileSystem) GetContent(ctx context.Context, id uint) (response.RSClose return nil, err } - err = fs.resetFileIDIfNotExist(ctx, id) + err = fs.ResetFileIDIfNotExist(ctx, id) if err != nil { return nil, err } @@ -226,7 +226,7 @@ func (fs *FileSystem) GroupFileByPolicy(ctx context.Context, files []model.File) // GetDownloadURL 创建文件下载链接, timeout 为数据库中存储过期时间的字段 func (fs *FileSystem) GetDownloadURL(ctx context.Context, id uint, timeout string) (string, error) { - err := fs.resetFileIDIfNotExist(ctx, id) + err := fs.ResetFileIDIfNotExist(ctx, id) if err != nil { return "", err } @@ -250,7 +250,7 @@ func (fs *FileSystem) GetDownloadURL(ctx context.Context, id uint, timeout strin // GetSource 获取可直接访问文件的外链地址 func (fs *FileSystem) GetSource(ctx context.Context, fileID uint) (string, error) { // 查找文件记录 - err := fs.resetFileIDIfNotExist(ctx, fileID) + err := fs.ResetFileIDIfNotExist(ctx, fileID) if err != nil { return "", ErrObjectNotExist.WithError(err) } @@ -308,7 +308,7 @@ func (fs *FileSystem) ResetFileIfNotExist(ctx context.Context, path string) erro } // ResetFileIfNotExist 重设当前目标文件为 id,如果当前目标为空 -func (fs *FileSystem) resetFileIDIfNotExist(ctx context.Context, id uint) error { +func (fs *FileSystem) ResetFileIDIfNotExist(ctx context.Context, id uint) error { // 找到文件 if len(fs.FileTarget) == 0 { file, err := model.GetFilesByIDs([]uint{id}, fs.User.ID) diff --git a/pkg/filesystem/file_test.go b/pkg/filesystem/file_test.go index d80cd37..d5dde99 100644 --- a/pkg/filesystem/file_test.go +++ b/pkg/filesystem/file_test.go @@ -592,7 +592,7 @@ func TestFileSystem_ResetFileIDIfNotExist(t *testing.T) { }, }, } - asserts.Equal(ErrObjectNotExist, fs.resetFileIDIfNotExist(ctx, 1)) + asserts.Equal(ErrObjectNotExist, fs.ResetFileIDIfNotExist(ctx, 1)) } func TestFileSystem_Search(t *testing.T) { diff --git a/pkg/filesystem/image.go b/pkg/filesystem/image.go index a2e7e08..e1e15ca 100644 --- a/pkg/filesystem/image.go +++ b/pkg/filesystem/image.go @@ -24,7 +24,7 @@ var HandledExtension = []string{"jpg", "jpeg", "png", "gif"} // GetThumb 获取文件的缩略图 func (fs *FileSystem) GetThumb(ctx context.Context, id uint) (*response.ContentResponse, error) { // 根据 ID 查找文件 - err := fs.resetFileIDIfNotExist(ctx, id) + err := fs.ResetFileIDIfNotExist(ctx, id) if err != nil || fs.FileTarget[0].PicInfo == "" { return &response.ContentResponse{ Redirect: false, diff --git a/service/explorer/file.go b/service/explorer/file.go index 1055a5a..4f683ad 100644 --- a/service/explorer/file.go +++ b/service/explorer/file.go @@ -168,6 +168,12 @@ func (service *FileAnonymousGetService) Download(ctx context.Context, c *gin.Con return serializer.Err(serializer.CodeNotSet, err.Error(), err) } + // 查找文件记录 + err = fs.ResetFileIDIfNotExist(ctx, service.ID) + if err != nil { + return serializer.Err(serializer.CodeNotSet, err.Error(), err) + } + if fs.Policy.Type == "onedrive" { // 获取文件临时下载地址 downloadURL, err := fs.GetDownloadURL(ctx, 0, "download_timeout")