mirror of
https://github.com/zfile-dev/zfile.git
synced 2025-04-19 05:34:52 +00:00
✨ OneDrive 和 SharePoint 反代功能
This commit is contained in:
@@ -41,4 +41,6 @@ public class StorageConfigConstant {
|
||||
|
||||
public static final String IS_PRIVATE = "isPrivate";
|
||||
|
||||
public static final String PROXY_DOMAIN = "proxyDomain";
|
||||
|
||||
}
|
||||
@@ -46,4 +46,6 @@ public class StorageStrategyConfig {
|
||||
|
||||
private String siteType;
|
||||
|
||||
private String proxyDomain;
|
||||
|
||||
}
|
||||
@@ -29,6 +29,7 @@ public abstract class AbstractOneDriveServiceBase extends MicrosoftDriveServiceB
|
||||
add(new StorageConfig("accessToken", "访问令牌"));
|
||||
add(new StorageConfig("refreshToken", "刷新令牌"));
|
||||
add(new StorageConfig("basePath", "基路径"));
|
||||
add(new StorageConfig("proxyDomain", "反代域名"));
|
||||
}};
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ public abstract class AbstractSharePointServiceBase extends MicrosoftDriveServic
|
||||
return new ArrayList<StorageConfig>() {{
|
||||
add(new StorageConfig("accessToken", "访问令牌"));
|
||||
add(new StorageConfig("refreshToken", "刷新令牌"));
|
||||
add(new StorageConfig("proxyDomain", "反代域名"));
|
||||
add(new StorageConfig("basePath", "基路径"));
|
||||
add(new StorageConfig("siteName", "站点名称"));
|
||||
add(new StorageConfig("siteId", "SiteId"));
|
||||
|
||||
@@ -32,12 +32,6 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public abstract class MicrosoftDriveServiceBase extends AbstractBaseFileService {
|
||||
|
||||
|
||||
/**
|
||||
* https://graph.microsoft.com/v1.0/drives/6e4cf6d2f7e15197/root:%2FData%2F%E5%B8%A6%E6%9C%89%E7%AC%A6%E5%8F%B7%E6%96%87%E4%BB%B6%E5%A4%B9%E6%B5%8B%E8%AF%95%2F%25100+%2520:/children
|
||||
* https://graph.microsoft.com/v1.0/me/drive/root:%2FData%2F%E5%B8%A6%E6%9C%89%E7%AC%A6%E5%8F%B7%E6%96%87%E4%BB%B6%E5%A4%B9%E6%B5%8B%E8%AF%95%2F%25100+%2520:/children
|
||||
*/
|
||||
|
||||
/**
|
||||
* 获取根文件 API URI
|
||||
*/
|
||||
@@ -63,6 +57,7 @@ public abstract class MicrosoftDriveServiceBase extends AbstractBaseFileService
|
||||
*/
|
||||
private static final String ONE_DRIVE_FILE_FLAG = "file";
|
||||
|
||||
protected String proxyDomain;
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
@@ -174,7 +169,11 @@ public abstract class MicrosoftDriveServiceBase extends AbstractBaseFileService
|
||||
fileItemDTO.setTime(fileItem.getDate("lastModifiedDateTime"));
|
||||
|
||||
if (fileItem.containsKey("file")) {
|
||||
fileItemDTO.setUrl(fileItem.getString("@microsoft.graph.downloadUrl"));
|
||||
String originUrl = fileItem.getString("@microsoft.graph.downloadUrl");
|
||||
if (StringUtils.isNotNullOrEmpty(proxyDomain)) {
|
||||
originUrl = StringUtils.replaceHost(originUrl, proxyDomain);
|
||||
}
|
||||
fileItemDTO.setUrl(originUrl);
|
||||
fileItemDTO.setType(FileTypeEnum.FILE);
|
||||
} else {
|
||||
fileItemDTO.setType(FileTypeEnum.FOLDER);
|
||||
|
||||
@@ -47,6 +47,11 @@ public class OneDriveChinaServiceImpl extends AbstractOneDriveServiceBase implem
|
||||
String accessToken = stringStorageConfigMap.get(StorageConfigConstant.ACCESS_TOKEN_KEY).getValue();
|
||||
String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue();
|
||||
super.basePath = stringStorageConfigMap.get(StorageConfigConstant.BASE_PATH).getValue();
|
||||
StorageConfig proxyDomainStorageConfig = stringStorageConfigMap.get(StorageConfigConstant.PROXY_DOMAIN);
|
||||
if (proxyDomainStorageConfig != null) {
|
||||
super.proxyDomain = proxyDomainStorageConfig.getValue();
|
||||
}
|
||||
|
||||
|
||||
if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) {
|
||||
log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription());
|
||||
|
||||
@@ -47,6 +47,10 @@ public class OneDriveServiceImpl extends AbstractOneDriveServiceBase implements
|
||||
String accessToken = stringStorageConfigMap.get(StorageConfigConstant.ACCESS_TOKEN_KEY).getValue();
|
||||
String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue();
|
||||
super.basePath = stringStorageConfigMap.get(StorageConfigConstant.BASE_PATH).getValue();
|
||||
StorageConfig proxyDomainStorageConfig = stringStorageConfigMap.get(StorageConfigConstant.PROXY_DOMAIN);
|
||||
if (proxyDomainStorageConfig != null) {
|
||||
super.proxyDomain = proxyDomainStorageConfig.getValue();
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) {
|
||||
log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription());
|
||||
|
||||
@@ -48,6 +48,10 @@ public class SharePointChinaServiceImpl extends AbstractSharePointServiceBase im
|
||||
String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue();
|
||||
super.siteId = stringStorageConfigMap.get(StorageConfigConstant.SHAREPOINT_SITE_ID).getValue();
|
||||
super.basePath = stringStorageConfigMap.get(StorageConfigConstant.BASE_PATH).getValue();
|
||||
StorageConfig proxyDomainStorageConfig = stringStorageConfigMap.get(StorageConfigConstant.PROXY_DOMAIN);
|
||||
if (proxyDomainStorageConfig != null) {
|
||||
super.proxyDomain = proxyDomainStorageConfig.getValue();
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) {
|
||||
log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription());
|
||||
|
||||
@@ -48,6 +48,10 @@ public class SharePointServiceImpl extends AbstractSharePointServiceBase impleme
|
||||
String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue();
|
||||
super.siteId = stringStorageConfigMap.get(StorageConfigConstant.SHAREPOINT_SITE_ID).getValue();
|
||||
super.basePath = stringStorageConfigMap.get(StorageConfigConstant.BASE_PATH).getValue();
|
||||
StorageConfig proxyDomainStorageConfig = stringStorageConfigMap.get(StorageConfigConstant.PROXY_DOMAIN);
|
||||
if (proxyDomainStorageConfig != null) {
|
||||
super.proxyDomain = proxyDomainStorageConfig.getValue();
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) {
|
||||
log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package im.zhaojun.zfile.util;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import im.zhaojun.zfile.model.constant.ZFileConstant;
|
||||
|
||||
/**
|
||||
@@ -101,4 +102,16 @@ public class StringUtils {
|
||||
path = ObjectUtil.defaultIfNull(path, "");
|
||||
return StringUtils.removeDuplicateSeparator(basePath + ZFileConstant.PATH_SEPARATOR + path);
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换 URL 中的 Host 部分,如替换 http://a.com/1.txt 为 https://abc.com/1.txt
|
||||
* @param originUrl
|
||||
* 原 URL
|
||||
* @param replaceHost
|
||||
* 替换的 HOST
|
||||
* @return 替换后的 URL
|
||||
*/
|
||||
public static String replaceHost(String originUrl, String replaceHost) {
|
||||
return concatPath(replaceHost, URLUtil.getPath(originUrl));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user