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

52 lines
1.6 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';
import AliyunBackend from './aliyun.backend';
import TencentBackend from './tencent.backend';
import S3Backend from './s3.backend';
import UnknownBackend from './unknown.backend';
import { BRC } from '../..';
const CosBackendDict: Record<string, CosBackend<any>> = {
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<ED extends EntityDict>(clazz: new () => CosBackend<ED>) {
const instance = new clazz();
CosBackendDict[instance.name] = instance as CosBackend<ED>;
}
export function getCosBackend<ED extends EntityDict>(origin: string) {
assert(CosBackendDict.hasOwnProperty(origin));
return CosBackendDict[origin] as CosBackend<ED>;
}
export async function composeFileUrlBackend<ED extends EntityDict>(
application: ED['application']['Schema'],
extraFile: ED['extraFile']['OpSchema'],
context: BRC<ED>,
style?: string
) {
const { origin } = extraFile;
const cos = CosBackendDict[origin];
return cos.composeFileUrlBackend({
application, extraFile, context, style
});
}