import { ProviderConfigResolver, ResolvedProviderConfig } from './types'; import { EnvConfigResolverImpl } from './EnvConfigResolverImpl'; /** * 统一 Provider 配置解析的【唯一入口】。 * 切换云厂商时只需改本文件:改 OSS_PROVIDER 环境变量或增加 case,无需改 OssService / CLI 等。 * * 环境变量约定: * - OSS_PROVIDER:当前使用的存储,如 'huawei'(默认) * - 当 OSS_PROVIDER=huawei 时,使用 OBS_* 变量(见 EnvConfigResolverImpl) * - 后续接入阿里云等时,在此增加 case 并读取对应 env 即可。 */ export class ProviderConfigResolverImpl implements ProviderConfigResolver { private readonly huaweiResolver = new EnvConfigResolverImpl(); constructor(private readonly env: string) {} resolve(): ResolvedProviderConfig { const provider = process.env.OSS_PROVIDER; switch (provider) { case 'huawei': { const options = this.huaweiResolver.resolveHuaweiConfig(this.env); return { providerConfig: { type: 'huawei', options }, basePrefix: options.basePrefix, cdnBaseUrl: options.cdnBaseUrl, }; } // 后续切换或新增云厂商时,在此增加 case,例如: // case 'aliyun': { ... return { providerConfig: { type: 'aliyun', options }, basePrefix, cdnBaseUrl }; } default: throw new Error(`不支持的 OSS_PROVIDER: ${provider},当前仅支持 huawei`); } } }