oak-general-business/src/utils/cos/index.backend.ts

43 lines
1.3 KiB
TypeScript

import { assert } from 'oak-domain/lib/utils/assert';
import { EntityDict } from '../../oak-app-domain';
import { CosBackend } from '../../types/Cos';
import { Config } from '../../types/Config';
import CTYunBackend from './ctyun.backend';
import WechatBackend from './wechat.backend';
import QiniuBackend from './qiniu.backend';
const CosBackendDict: Record<string, CosBackend<EntityDict>> = {
'ctyun': new CTYunBackend(),
'wechat': new WechatBackend(),
'qiniu': new QiniuBackend(),
};
/**
* 注入一个其它OSS上实现的uploader类
* @param clazz
*/
export function registerCosBackend<ED extends EntityDict>(clazz: new () => CosBackend<ED>) {
const instance = new clazz();
CosBackendDict[instance.name] = instance as CosBackend<EntityDict>;
}
export function getCosBackend<ED extends EntityDict>(origin: string) {
assert(CosBackendDict.hasOwnProperty(origin));
return CosBackendDict[origin] as CosBackend<ED>;
}
export function composeFileUrl<ED extends EntityDict>(
application: ED['application']['Schema'],
extraFile: ED['extraFile']['OpSchema'],
style?: string
) {
const { origin } = extraFile;
if (origin === 'unknown') {
// 扯淡的代码 by Xc 20240521
return extraFile.extra1!;
}
const cos = CosBackendDict[origin];
return cos.composeFileUrl(application, extraFile, style);
}