package com.fdkankan.scene.oss.aliyun; import com.aliyun.oss.ClientBuilderConfiguration; import com.fdkankan.scene.oss.InnerUtils; import lombok.Data; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.StringUtils; import java.io.Serializable; import java.util.Map; /** * 阿里云OSS配置属性 */ @Data public class AliyunOssProperties implements Serializable, InitializingBean { public static final String PREFIX = "aliyun.oss"; private String env; /** * 服务地址 */ private String endpoint; /** * 服务地址(内网) */ private String internalEndpoint; /** * 区域id */ private String regionId; /** * 访问标识 */ private String accessKeyId; /** * 访问密钥 */ private String accessKeySecret; /** * 会话token */ private String securityToken; /** * 授权信息 */ private String roleArn; /** * 自定义域名, bucket名称忽略大小写 */ private Map bucketCustomDomain; /** * Bucket */ private String bucket; /** * Client configuration. */ private ClientBuilderConfiguration config = new ClientBuilderConfiguration(); @Override public void afterPropertiesSet() { InnerUtils.checkArgument(!StringUtils.isEmpty(endpoint), "'endpoint' can't be empty"); InnerUtils.checkArgument(!StringUtils.isEmpty(bucket), "'bucket' can't be empty"); } /** * 获取请求到阿里云的服务地址, 内网地址优先 */ public String getRequestEndpoint() { if (this.internalEndpoint != null && this.internalEndpoint.length() > 0) { return internalEndpoint; } return endpoint; } /** * 获取访问访问前缀, 优先级: customDomain > endpoint */ public String getHostByBucket(String bucket) { if (bucketCustomDomain != null) { String domain = bucketCustomDomain.get(bucket); if (domain != null && domain.length() > 0) { return domain; } } return InnerUtils.generateHost(this.endpoint, bucket); } }