Merge branch 'master' of github.com:cloudreve/Cloudreve

pull/779/head
ellermister 5 years ago
commit 7c0ed75b8a

@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

@ -212,7 +212,7 @@ func (file *File) UpdateSize(value uint64) error {
// UpdateSourceName 更新文件的源文件名 // UpdateSourceName 更新文件的源文件名
func (file *File) UpdateSourceName(value string) error { func (file *File) UpdateSourceName(value string) error {
return DB.Model(&file).Update("source_name", value).Error return DB.Model(&file).Set("gorm:association_autoupdate", false).Update("source_name", value).Error
} }
// UpdatePicExifModel 更新文件的设备信息 // UpdatePicExifModel 更新文件的设备信息

@ -152,8 +152,13 @@ func (handler Driver) Source(
isDownload bool, isDownload bool,
speed int, speed int,
) (string, error) { ) (string, error) {
cacheKey := fmt.Sprintf("onedrive_source_%d_%s", handler.Policy.ID, path)
if file, ok := ctx.Value(fsctx.FileModelCtx).(model.File); ok {
cacheKey = fmt.Sprintf("onedrive_source_file_%d_%d", file.UpdatedAt.Unix(), file.ID)
}
// 尝试从缓存中查找 // 尝试从缓存中查找
if cachedURL, ok := cache.Get(fmt.Sprintf("onedrive_source_%d_%s", handler.Policy.ID, path)); ok { if cachedURL, ok := cache.Get(cacheKey); ok {
return handler.replaceSourceHost(cachedURL.(string)) return handler.replaceSourceHost(cachedURL.(string))
} }
@ -162,7 +167,7 @@ func (handler Driver) Source(
if err == nil { if err == nil {
// 写入新的缓存 // 写入新的缓存
cache.Set( cache.Set(
fmt.Sprintf("onedrive_source_%d_%s", handler.Policy.ID, path), cacheKey,
res.DownloadURL, res.DownloadURL,
model.GetIntSetting("onedrive_source_timeout", 1800), model.GetIntSetting("onedrive_source_timeout", 1800),
) )

@ -2,6 +2,7 @@ package onedrive
import ( import (
"context" "context"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
@ -150,6 +151,21 @@ func TestDriver_Source(t *testing.T) {
asserts.Equal("res", res) asserts.Equal("res", res)
} }
// 命中缓存 上下文存在文件 成功
{
file := model.File{}
file.ID = 1
file.UpdatedAt = time.Now()
ctx := context.WithValue(context.Background(), fsctx.FileModelCtx, file)
handler.Client.Credential.ExpiresIn = time.Now().Add(time.Duration(100) * time.Hour).Unix()
handler.Client.Credential.AccessToken = "1"
cache.Set(fmt.Sprintf("onedrive_source_file_%d_1", file.UpdatedAt.Unix()), "res", 0)
res, err := handler.Source(ctx, "123.jpg", url.URL{}, 0, true, 0)
cache.Deletes([]string{"0_123.jpg"}, "onedrive_source_")
asserts.NoError(err)
asserts.Equal("res", res)
}
// 成功 // 成功
{ {
handler.Client.Credential.ExpiresIn = time.Now().Add(time.Duration(100) * time.Hour).Unix() handler.Client.Credential.ExpiresIn = time.Now().Add(time.Duration(100) * time.Hour).Unix()

Loading…
Cancel
Save