mirror of
https://github.com/zfile-dev/zfile.git
synced 2025-04-19 05:34:52 +00:00
88 lines
2.8 KiB
Java
88 lines
2.8 KiB
Java
package im.zhaojun.onedrive.service;
|
|
|
|
import im.zhaojun.common.config.GlobalScheduleTask;
|
|
import im.zhaojun.common.exception.NotExistFileException;
|
|
import im.zhaojun.common.model.StorageConfig;
|
|
import im.zhaojun.common.model.constant.StorageConfigConstant;
|
|
import im.zhaojun.common.model.dto.FileItemDTO;
|
|
import im.zhaojun.common.model.enums.StorageTypeEnum;
|
|
import im.zhaojun.common.service.AbstractFileService;
|
|
import im.zhaojun.common.service.FileService;
|
|
import im.zhaojun.common.service.StorageConfigService;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @author zhaojun
|
|
* @date 2020/1/12 13:53
|
|
*/
|
|
@Service
|
|
@Slf4j
|
|
public class OneDriveServiceImpl extends AbstractFileService implements FileService {
|
|
|
|
public static final String SYSTEM_ONEDRIVE_CACHE_PREFIX = "zfile-onedrive-cache:";
|
|
|
|
public static final String SYSTEM_ONEDRIVE_CACHE_ASSESS_TOKEN_KEY = "accessToken";
|
|
|
|
public static final String SYSTEM_ONEDRIVE_CACHE_REFRESH_TOKEN_KEY = "refreshToken";
|
|
|
|
@Resource
|
|
private GlobalScheduleTask globalScheduleTask;
|
|
|
|
@Resource
|
|
private StorageConfigService storageConfigService;
|
|
|
|
@Resource
|
|
private OneDriveService oneDriveService;
|
|
|
|
@Override
|
|
public void init() {
|
|
try {
|
|
Map<String, StorageConfig> stringStorageConfigMap =
|
|
storageConfigService.selectStorageConfigMapByKey(StorageTypeEnum.ONE_DRIVE);
|
|
String accessToken = stringStorageConfigMap.get(StorageConfigConstant.ACCESS_TOKEN_KEY).getValue();
|
|
String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue();
|
|
|
|
if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) {
|
|
log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription());
|
|
isInitialized = false;
|
|
} else {
|
|
globalScheduleTask.refreshOneDriveToken();
|
|
isInitialized = testConnection();
|
|
}
|
|
} catch (Exception e) {
|
|
log.debug(getStorageTypeEnum().getDescription() + " 初始化异常, 已跳过");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public List<FileItemDTO> fileList(String path) {
|
|
return oneDriveService.list(path);
|
|
}
|
|
|
|
@Override
|
|
public String getDownloadUrl(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public StorageTypeEnum getStorageTypeEnum() {
|
|
return StorageTypeEnum.ONE_DRIVE;
|
|
}
|
|
|
|
@Override
|
|
public FileItemDTO getFileItem(String path) {
|
|
List<FileItemDTO> list = fileList(path);
|
|
|
|
if (list == null || list.size() == 0) {
|
|
throw new NotExistFileException();
|
|
}
|
|
return list.get(0);
|
|
}
|
|
}
|