43 lines
1.3 KiB
TypeScript
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);
|
|
}
|