增加onedrive国际版反向代理自定义前缀

存储策略专家模式
世纪互联文件资源根URL 必须留空
国际版替换你的反向地址  不配置cdn时候务必留空
cdn自行搭建
This commit is contained in:
上海明馨科技有限公司 2020-09-18 12:47:01 +08:00 committed by GitHub
parent 40414fe6ae
commit 9f2c5dc606
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) {