import { assert } from 'oak-domain/lib/utils/assert'; import CTYunBackend from './ctyun.backend'; import WechatBackend from './wechat.backend'; import QiniuBackend from './qiniu.backend'; import AliyunBackend from './aliyun.backend'; import TencentBackend from './tencent.backend'; import S3Backend from './s3.backend'; import UnknownBackend from './unknown.backend'; const CosBackendDict = { unknown: new UnknownBackend(), ctyun: new CTYunBackend(), wechat: new WechatBackend(), qiniu: new QiniuBackend(), aliyun: new AliyunBackend(), tencent: new TencentBackend(), s3: new S3Backend(), }; /** * 注入一个其它OSS上实现的uploader类 * @param clazz */ export function registerCosBackend(clazz) { const instance = new clazz(); CosBackendDict[instance.name] = instance; } export function getCosBackend(origin) { assert(CosBackendDict.hasOwnProperty(origin), `不存在类型为"${origin}"的CosBackend类`); return CosBackendDict[origin]; } export async function composeFileUrlBackend(application, extraFile, context, style) { const { origin } = extraFile; const cos = CosBackendDict[origin]; return cos.composeFileUrlBackend({ application, extraFile, context, style }); }