mirror of
https://github.com/zfile-dev/zfile.git
synced 2025-04-19 05:34:52 +00:00
62 lines
2.2 KiB
Java
62 lines
2.2 KiB
Java
package im.zhaojun.onedrive.common.config;
|
|
|
|
import im.zhaojun.common.model.StorageConfig;
|
|
import im.zhaojun.common.model.constant.StorageConfigConstant;
|
|
import im.zhaojun.common.model.enums.StorageTypeEnum;
|
|
import im.zhaojun.common.service.StorageConfigService;
|
|
import im.zhaojun.onedrive.china.service.OneDriveChinaService;
|
|
import im.zhaojun.onedrive.international.service.OneDriveService;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.http.client.ClientHttpRequestInterceptor;
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.Collections;
|
|
|
|
/**
|
|
* @author zhaojun
|
|
*/
|
|
@Configuration
|
|
public class OneDriveConfig {
|
|
|
|
@Resource
|
|
private StorageConfigService storageConfigService;
|
|
|
|
@Resource
|
|
@Lazy
|
|
private OneDriveService oneDriveService;
|
|
|
|
@Resource
|
|
@Lazy
|
|
private OneDriveChinaService oneDriveChinaService;
|
|
|
|
@Bean
|
|
public RestTemplate oneDriveRestTemplate() {
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
|
|
ClientHttpRequestInterceptor interceptor = (httpRequest, bytes, clientHttpRequestExecution) -> {
|
|
String host = httpRequest.getURI().getHost();
|
|
StorageTypeEnum type;
|
|
if (oneDriveChinaService.getGraphEndPoint().contains(host)) {
|
|
type = StorageTypeEnum.ONE_DRIVE_CHINA;
|
|
} else if (oneDriveService.getGraphEndPoint().contains(host)) {
|
|
type = StorageTypeEnum.ONE_DRIVE;
|
|
} else {
|
|
return clientHttpRequestExecution.execute(httpRequest, bytes);
|
|
}
|
|
|
|
StorageConfig accessTokenConfig =
|
|
storageConfigService.selectByTypeAndKey(type, StorageConfigConstant.ACCESS_TOKEN_KEY);
|
|
|
|
String tokenValue = String.format("%s %s", "Bearer", accessTokenConfig.getValue());
|
|
httpRequest.getHeaders().add("Authorization", tokenValue);
|
|
return clientHttpRequestExecution.execute(httpRequest, bytes);
|
|
};
|
|
restTemplate.setInterceptors(Collections.singletonList(interceptor));
|
|
return restTemplate;
|
|
}
|
|
|
|
}
|