From 9f2c5dc606ed0f21cae38c9b6d95b73754154b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8A=E6=B5=B7=E6=98=8E=E9=A6=A8=E7=A7=91=E6=8A=80?= =?UTF-8?q?=E6=9C=89=E9=99=90=E5=85=AC=E5=8F=B8?= Date: Fri, 18 Sep 2020 12:47:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0onedrive=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E7=89=88=E5=8F=8D=E5=90=91=E4=BB=A3=E7=90=86=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 存储策略专家模式 世纪互联文件资源根URL 必须留空 国际版替换你的反向地址 不配置cdn时候务必留空 cdn自行搭建 --- pkg/filesystem/driver/onedrive/handler.go | 31 ++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/pkg/filesystem/driver/onedrive/handler.go b/pkg/filesystem/driver/onedrive/handler.go index e91ba2f3..5476f3d3 100644 --- a/pkg/filesystem/driver/onedrive/handler.go +++ b/pkg/filesystem/driver/onedrive/handler.go @@ -153,9 +153,12 @@ func (handler Driver) Source( ) (string, error) { // 尝试从缓存中查找 if cachedURL, ok := cache.Get(fmt.Sprintf("onedrive_source_%d_%s", handler.Policy.ID, path)); ok { - return cachedURL.(string), nil + finalURL, err := handler.getFinalURL(cachedURL.(string)) + if err != nil { + return "", err + } + return finalURL, nil } - // 缓存不存在,重新获取 res, err := handler.Client.Meta(ctx, "", path) if err == nil { @@ -165,10 +168,32 @@ func (handler Driver) Source( res.DownloadURL, model.GetIntSetting("onedrive_source_timeout", 1800), ) - return res.DownloadURL, nil + finalURL, err := handler.getFinalURL(res.DownloadURL) + if err != nil { + return "", err + } + return finalURL, nil } return "", err } +//增加国际版反向代理自定义前缀 +func (handler Driver) getFinalURL(key string)(string, error){ + cdnURL, err := url.Parse(handler.Policy.BaseURL) + if err != nil { + return "", err + } + if cdnURL.String() != "" { + finalURL, err := url.Parse(key) + if err != nil { + return "", err + } + finalURL.Host = cdnURL.Host + finalURL.Scheme = cdnURL.Scheme + return finalURL.String(), err + } + return key, err +} + // Token 获取上传会话URL func (handler Driver) Token(ctx context.Context, TTL int64, key string) (serializer.UploadCredential, error) {