build
This commit is contained in:
parent
20708057da
commit
ee57c1e932
|
|
@ -1,2 +1,2 @@
|
|||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "article", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "articleMenu", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "system", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "platform", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "article", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "articleMenu", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "system", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "platform", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default checkers;
|
||||
|
|
|
|||
|
|
@ -77,7 +77,12 @@ export class ExtraFile extends Feature {
|
|||
const up = new Upload();
|
||||
const cos = getCos(extraFile.origin);
|
||||
try {
|
||||
await cos.upload(extraFile, up.uploadFile, file, this.uploadToAspect.bind(this));
|
||||
await cos.upload({
|
||||
extraFile: extraFile,
|
||||
uploadFn: up.uploadFile,
|
||||
file: file,
|
||||
uploadToAspect: this.uploadToAspect.bind(this),
|
||||
});
|
||||
}
|
||||
catch (err) {
|
||||
item.state = 'failed';
|
||||
|
|
@ -135,7 +140,12 @@ export class ExtraFile extends Feature {
|
|||
return "unknown";
|
||||
}
|
||||
const cos = getCos(origin);
|
||||
return cos.composeFileUrl(this.application.getApplication(), extraFile, style);
|
||||
return cos.composeFileUrl({
|
||||
application: this.application.getApplication(),
|
||||
extraFile: extraFile,
|
||||
style: style,
|
||||
cache: this.cache,
|
||||
});
|
||||
}
|
||||
getFileState(id) {
|
||||
if (this.files[id]) {
|
||||
|
|
@ -171,7 +181,13 @@ export class ExtraFile extends Feature {
|
|||
this.fileUpLoad = up;
|
||||
try {
|
||||
const cos = getCos(newExtraFile.origin);
|
||||
await cos.upload(newExtraFile, up.uploadFile, file, this.uploadToAspect.bind(this), getPercent);
|
||||
await cos.upload({
|
||||
extraFile: newExtraFile,
|
||||
uploadFn: up.uploadFile,
|
||||
file: file,
|
||||
uploadToAspect: this.uploadToAspect.bind(this),
|
||||
getPercent: getPercent,
|
||||
});
|
||||
if (!cos.autoInform()) {
|
||||
await this.cache.exec('operate', {
|
||||
entity: 'extraFile',
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "mobile", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "mobile", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
|
|||
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
|
||||
entity: any;
|
||||
entityId: string;
|
||||
}, userIds?: string[]): Promise<1 | 0>;
|
||||
}, userIds?: string[]): Promise<0 | 1>;
|
||||
/**
|
||||
* 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成
|
||||
* 必须在entity的action的后trigger中调用
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { EntityDict } from '../oak-app-domain';
|
||||
import { BRC } from '..';
|
||||
import { Cache } from 'oak-frontend-base/es/features/cache';
|
||||
export type UploadFn = (file: File | string, name: string, // 文件的part name
|
||||
uploadUrl: string, // 上传的url
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
|
|
@ -26,11 +27,22 @@ export interface Cos<ED extends EntityDict> {
|
|||
* @param extraFile
|
||||
* @returns
|
||||
*/
|
||||
upload: (extraFile: ED['extraFile']['OpSchema'], uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function) => Promise<void>;
|
||||
upload: (options: {
|
||||
extraFile: ED['extraFile']['OpSchema'];
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}) => Promise<void>;
|
||||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
composeFileUrl: (application: Partial<ED['application']['Schema']>, extraFile: Partial<ED['extraFile']['OpSchema']>, style?: string) => string;
|
||||
composeFileUrl: (options: {
|
||||
application: Partial<ED['application']['Schema']>;
|
||||
extraFile: Partial<ED['extraFile']['OpSchema']>;
|
||||
cache: Cache<ED>;
|
||||
style?: string;
|
||||
}) => string;
|
||||
}
|
||||
export interface CosBackend<ED extends EntityDict> {
|
||||
name: string;
|
||||
|
|
@ -45,7 +57,12 @@ export interface CosBackend<ED extends EntityDict> {
|
|||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
composeFileUrlBackend: (application: ED['application']['Schema'], extraFile: ED['extraFile']['OpSchema'], context: BRC<ED>, style?: string) => Promise<string>;
|
||||
composeFileUrlBackend: (options: {
|
||||
application: ED['application']['Schema'];
|
||||
extraFile: ED['extraFile']['OpSchema'];
|
||||
context: BRC<ED>;
|
||||
style?: string;
|
||||
}) => Promise<string>;
|
||||
/**
|
||||
* 后台对upload是否成功不确定的文件,向OSS发起主动确认
|
||||
* @param extraFile
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class ALiYunBackend extends ALiYun implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,25 @@ export default class ALiYunBackend extends ALiYun {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: aliyunCosConfig } = this.getConfig(application);
|
||||
if (aliyunCosConfig) {
|
||||
let bucket = aliyunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class ALiYun implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").AliCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ export default class ALiYun {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -57,7 +58,8 @@ export default class ALiYun {
|
|||
}
|
||||
throw new OakUploadException('文件上传阿里云失败');
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: aliyunCosConfig } = this.getConfig(application);
|
||||
if (aliyunCosConfig) {
|
||||
let bucket = aliyunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class CTYunBackend extends CTYun implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,25 @@ export default class CTYunBackend extends CTYun {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: ctYunCosConfig } = this.getConfig(application);
|
||||
if (ctYunCosConfig) {
|
||||
let bucket = ctYunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").CTYunCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ export default class CTYun {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -67,7 +68,8 @@ export default class CTYun {
|
|||
// 转换参数(如120w_120h_90q)由一个或多个键值对(以"_"连接)组成,“值”在前“键”在后,“值”为数字类型,“键”为一位字母。
|
||||
// 转换格式(如.jpg)是指定图片转换的输出格式,通过指定转换格式,可以对原图处理并返回指定的图片格式。支持的转换格式为: jpg、webp、png、bmp。
|
||||
// 对象存储文档 https://www.ctyun.cn/document/10026693/10026878
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: ctYunCosConfig } = this.getConfig(application);
|
||||
if (ctYunCosConfig) {
|
||||
let bucket = ctYunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -30,5 +30,7 @@ export function getCosBackend(origin) {
|
|||
export async function composeFileUrlBackend(application, extraFile, context, style) {
|
||||
const { origin } = extraFile;
|
||||
const cos = CosBackendDict[origin];
|
||||
return cos.composeFileUrlBackend(application, extraFile, context, style);
|
||||
return cos.composeFileUrlBackend({
|
||||
application, extraFile, context, style
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { EntityDict } from '../../oak-app-domain';
|
||||
import { Cache } from 'oak-frontend-base/es/features/cache';
|
||||
import { Cos } from '../../types/Cos';
|
||||
/**
|
||||
* 注入一个其它OSS上实现的uploader类
|
||||
|
|
@ -6,4 +7,9 @@ import { Cos } from '../../types/Cos';
|
|||
*/
|
||||
export declare function registerCos<ED extends EntityDict>(clazz: new () => Cos<ED>): void;
|
||||
export declare function getCos<ED extends EntityDict>(origin: string): Cos<ED>;
|
||||
export declare function composeFileUrl<ED extends EntityDict>(application: Partial<ED['application']['Schema']>, extraFile: Partial<ED['extraFile']['OpSchema']>, style?: string): string;
|
||||
export declare function composeFileUrl<ED extends EntityDict>(options: {
|
||||
application: Partial<ED['application']['Schema']>;
|
||||
extraFile: Partial<ED['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
cache: Cache<ED>;
|
||||
}): string;
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ export function getCos(origin) {
|
|||
assert(CosDict.hasOwnProperty(origin));
|
||||
return CosDict[origin];
|
||||
}
|
||||
export function composeFileUrl(application, extraFile, style) {
|
||||
const { origin } = extraFile;
|
||||
export function composeFileUrl(options) {
|
||||
const { origin } = options.extraFile;
|
||||
const cos = CosDict[origin];
|
||||
return cos.composeFileUrl(application, extraFile, style);
|
||||
return cos.composeFileUrl(options);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import Local from './local';
|
|||
import { BRC } from '../..';
|
||||
export default class LocalBackend extends Local implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,23 @@ export default class LocalBackend extends Local {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: localConfig } = this.getConfig(application);
|
||||
let bucket = localConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol, nginxPath } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}${nginxPath ? '/' + nginxPath : ''}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class Local implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").LocalCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ export default class Local {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
let result;
|
||||
const { applicationId, type, extra2, id } = extraFile;
|
||||
try {
|
||||
|
|
@ -45,8 +46,8 @@ export default class Local {
|
|||
throw new OakUploadException('文件上传服务器失败');
|
||||
}
|
||||
}
|
||||
composeFileUrl(application, extraFile, style //多媒体样式
|
||||
) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: localConfig } = this.getConfig(application);
|
||||
let bucket = localConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import Qiniu from './qiniu';
|
|||
import { BRC } from '../..';
|
||||
export default class QiniuBackend extends Qiniu implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -11,8 +11,25 @@ export default class QiniuBackend extends Qiniu {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: qiniuCosConfig } = this.getConfig(application);
|
||||
if (qiniuCosConfig) {
|
||||
let bucket = qiniuCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class Qiniu implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").QiniuCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ export default class Qiniu {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -62,8 +63,8 @@ export default class Qiniu {
|
|||
// 对于图片文件 1.png ,访问样式链接 https://{domain}/1.png-small.jpg,即可获得处理后的 jpg 格式图片
|
||||
// "-"是默认的样式分隔符,
|
||||
// 查看文档 https://developer.qiniu.com/kodo/8558/set-the-picture-style
|
||||
composeFileUrl(application, extraFile, style //多媒体样式
|
||||
) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: qiniuCosConfig } = this.getConfig(application);
|
||||
if (qiniuCosConfig) {
|
||||
let bucket = qiniuCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class S3Backend extends S3 implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -19,8 +19,30 @@ export default class S3Backend extends S3 {
|
|||
endpoint,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: s3CosConfig, endpoint } = this.getConfig(application);
|
||||
if (s3CosConfig) {
|
||||
let bucket = s3CosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol, pathStyle } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
const key = this.formKey(extraFile);
|
||||
// 如果使用 pathStyle (Minio 常用)
|
||||
if (pathStyle && endpoint) {
|
||||
return `${protocol2}//${domain}/${bucket.name}/${key}${style ? style : ''}`;
|
||||
}
|
||||
// 否则使用虚拟主机风格 (AWS S3 默认)
|
||||
return `${protocol2}//${domain}/${key}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,16 @@ export default class S3 implements Cos<EntityDict> {
|
|||
defaultBucket: string;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ export default class S3 {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -52,7 +53,8 @@ export default class S3 {
|
|||
}
|
||||
throw new OakUploadException('文件上传S3失败');
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: s3CosConfig, endpoint } = this.getConfig(application);
|
||||
if (s3CosConfig) {
|
||||
let bucket = s3CosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class TencentYunBackend extends TencentYun implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,25 @@ export default class TencentYunBackend extends TencentYun {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: tencentCosConfig } = this.getConfig(application);
|
||||
if (tencentCosConfig) {
|
||||
let bucket = tencentCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class TencentYun implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").TencentCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ export default class TencentYun {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -61,7 +62,8 @@ export default class TencentYun {
|
|||
}
|
||||
throw new OakUploadException('文件上传腾讯云失败');
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: tencentCosConfig } = this.getConfig(application);
|
||||
if (tencentCosConfig) {
|
||||
let bucket = tencentCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import Unknown from './unknown';
|
|||
import { BRC } from '../..';
|
||||
export default class UnknownBackend extends Unknown implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,9 @@ export default class UnknownBackend extends Unknown {
|
|||
getConfigAndInstance(application) {
|
||||
return {};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
return extraFile.extra1;
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,16 @@ export default class Unknown implements Cos<EntityDict> {
|
|||
autoInform(): boolean;
|
||||
protected getConfig(application: EntityDict['application']['Schema']): {};
|
||||
protected formKey(extraFile: OpSchema): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,12 +13,13 @@ export default class Unknown {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
throw new OakUploadException('unknown未实现上传');
|
||||
}
|
||||
// 类型unknown 只能从extra1取值
|
||||
composeFileUrl(application, extraFile, style //多媒体样式
|
||||
) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
return extraFile.extra1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class WechatBackend extends Wechat implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<any>;
|
||||
|
|
|
|||
|
|
@ -9,8 +9,9 @@ export default class WechatBackend extends Wechat {
|
|||
type,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
// 微信上传素材库
|
||||
|
|
|
|||
|
|
@ -9,6 +9,16 @@ export default class Wechat implements Cos<EntityDict> {
|
|||
config: WechatPublicConfig;
|
||||
type: "wechatPublic";
|
||||
};
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@ export default class Wechat {
|
|||
type: application.type,
|
||||
};
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
let result;
|
||||
const { applicationId, type, extra2, id } = extraFile;
|
||||
assert(type === 'image');
|
||||
|
|
@ -38,7 +39,7 @@ export default class Wechat {
|
|||
throw new OakUploadException('文件上传微信失败');
|
||||
}
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.batchGetMaterialList = exports.getArticle = exports.batchGetArticle = exports.deleteMaterial = exports.getMaterial = exports.uploadWechatMedia = exports.signatureJsSDK = exports.getApplication = void 0;
|
||||
exports.getApplication = getApplication;
|
||||
exports.signatureJsSDK = signatureJsSDK;
|
||||
exports.uploadWechatMedia = uploadWechatMedia;
|
||||
exports.getMaterial = getMaterial;
|
||||
exports.deleteMaterial = deleteMaterial;
|
||||
exports.batchGetArticle = batchGetArticle;
|
||||
exports.getArticle = getArticle;
|
||||
exports.batchGetMaterialList = batchGetMaterialList;
|
||||
const tslib_1 = require("tslib");
|
||||
const assert_1 = require("oak-domain/lib/utils/assert");
|
||||
const Projection_1 = require("../types/Projection");
|
||||
|
|
@ -114,7 +121,6 @@ async function getApplication(params, context) {
|
|||
}
|
||||
}
|
||||
}
|
||||
exports.getApplication = getApplication;
|
||||
async function signatureJsSDK({ url, env }, context) {
|
||||
const application = context.getApplication();
|
||||
const { type, config } = application;
|
||||
|
|
@ -125,7 +131,6 @@ async function signatureJsSDK({ url, env }, context) {
|
|||
const result = await wechatInstance.signatureJsSDK({ url });
|
||||
return result;
|
||||
}
|
||||
exports.signatureJsSDK = signatureJsSDK;
|
||||
async function uploadWechatMedia(params, // FormData表单提交 isPermanent 变成 'true' | 'false'
|
||||
context) {
|
||||
const { applicationId, file, type: mediaType, description, extraFileId, } = params;
|
||||
|
|
@ -206,7 +211,6 @@ context) {
|
|||
mediaId,
|
||||
};
|
||||
}
|
||||
exports.uploadWechatMedia = uploadWechatMedia;
|
||||
async function getMaterial(params, context) {
|
||||
const { mediaId, applicationId, isPermanent = false } = params;
|
||||
(0, assert_1.assert)(applicationId);
|
||||
|
|
@ -251,7 +255,6 @@ async function getMaterial(params, context) {
|
|||
}
|
||||
return result;
|
||||
}
|
||||
exports.getMaterial = getMaterial;
|
||||
async function deleteMaterial(params, context) {
|
||||
const { mediaId, applicationId } = params;
|
||||
(0, assert_1.assert)(applicationId);
|
||||
|
|
@ -275,7 +278,6 @@ async function deleteMaterial(params, context) {
|
|||
});
|
||||
return result;
|
||||
}
|
||||
exports.deleteMaterial = deleteMaterial;
|
||||
async function batchGetArticle(params, context) {
|
||||
const { applicationId, offset, count, noContent } = params;
|
||||
(0, assert_1.assert)(applicationId);
|
||||
|
|
@ -302,7 +304,6 @@ async function batchGetArticle(params, context) {
|
|||
});
|
||||
return result;
|
||||
}
|
||||
exports.batchGetArticle = batchGetArticle;
|
||||
async function getArticle(params, context) {
|
||||
const { applicationId, articleId } = params;
|
||||
(0, assert_1.assert)(applicationId);
|
||||
|
|
@ -327,7 +328,6 @@ async function getArticle(params, context) {
|
|||
});
|
||||
return result;
|
||||
}
|
||||
exports.getArticle = getArticle;
|
||||
async function batchGetMaterialList(params, context) {
|
||||
const { applicationId } = params;
|
||||
(0, assert_1.assert)(applicationId);
|
||||
|
|
@ -355,4 +355,3 @@ async function batchGetMaterialList(params, context) {
|
|||
});
|
||||
return result;
|
||||
}
|
||||
exports.batchGetMaterialList = batchGetMaterialList;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.deleteMenu = exports.deleteConditionalMenu = exports.createConditionalMenu = exports.createMenu = exports.getMenu = exports.getCurrentMenu = void 0;
|
||||
exports.getCurrentMenu = getCurrentMenu;
|
||||
exports.getMenu = getMenu;
|
||||
exports.createMenu = createMenu;
|
||||
exports.createConditionalMenu = createConditionalMenu;
|
||||
exports.deleteConditionalMenu = deleteConditionalMenu;
|
||||
exports.deleteMenu = deleteMenu;
|
||||
const tslib_1 = require("tslib");
|
||||
const WechatSDK_1 = tslib_1.__importDefault(require("oak-external-sdk/lib/WechatSDK"));
|
||||
const assert_1 = require("oak-domain/lib/utils/assert");
|
||||
|
|
@ -39,7 +44,6 @@ async function getCurrentMenu(params, context) {
|
|||
throw e;
|
||||
}
|
||||
}
|
||||
exports.getCurrentMenu = getCurrentMenu;
|
||||
async function getMenu(params, context) {
|
||||
const application = await getWechatPublicConfig(params.applicationId, context);
|
||||
(0, assert_1.assert)(application);
|
||||
|
|
@ -66,7 +70,6 @@ async function getMenu(params, context) {
|
|||
throw e;
|
||||
}
|
||||
}
|
||||
exports.getMenu = getMenu;
|
||||
async function createMenu(params, context) {
|
||||
const application = await getWechatPublicConfig(params.applicationId, context);
|
||||
(0, assert_1.assert)(application);
|
||||
|
|
@ -104,7 +107,6 @@ async function createMenu(params, context) {
|
|||
throw e;
|
||||
}
|
||||
}
|
||||
exports.createMenu = createMenu;
|
||||
async function createConditionalMenu(params, context) {
|
||||
const application = await getWechatPublicConfig(params.applicationId, context);
|
||||
(0, assert_1.assert)(application);
|
||||
|
|
@ -143,7 +145,6 @@ async function createConditionalMenu(params, context) {
|
|||
throw e;
|
||||
}
|
||||
}
|
||||
exports.createConditionalMenu = createConditionalMenu;
|
||||
async function deleteConditionalMenu(params, context) {
|
||||
const application = await getWechatPublicConfig(params.applicationId, context);
|
||||
(0, assert_1.assert)(application);
|
||||
|
|
@ -157,7 +158,6 @@ async function deleteConditionalMenu(params, context) {
|
|||
const result = await wechatInstance.deleteConditionalMenu(params.menuId);
|
||||
return result;
|
||||
}
|
||||
exports.deleteConditionalMenu = deleteConditionalMenu;
|
||||
async function deleteMenu(params, context) {
|
||||
const application = await getWechatPublicConfig(params.applicationId, context);
|
||||
(0, assert_1.assert)(application);
|
||||
|
|
@ -171,4 +171,3 @@ async function deleteMenu(params, context) {
|
|||
const result = await wechatInstance.deleteMenu();
|
||||
return result;
|
||||
}
|
||||
exports.deleteMenu = deleteMenu;
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "article", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "articleMenu", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "system", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "platform", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "applicationPassport", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "article", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "articleMenu", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "system", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "platform", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default checkers;
|
||||
|
|
|
|||
|
|
@ -80,7 +80,12 @@ class ExtraFile extends Feature_1.Feature {
|
|||
const up = new upload_1.Upload();
|
||||
const cos = (0, index_frontend_1.getCos)(extraFile.origin);
|
||||
try {
|
||||
await cos.upload(extraFile, up.uploadFile, file, this.uploadToAspect.bind(this));
|
||||
await cos.upload({
|
||||
extraFile: extraFile,
|
||||
uploadFn: up.uploadFile,
|
||||
file: file,
|
||||
uploadToAspect: this.uploadToAspect.bind(this),
|
||||
});
|
||||
}
|
||||
catch (err) {
|
||||
item.state = 'failed';
|
||||
|
|
@ -138,7 +143,12 @@ class ExtraFile extends Feature_1.Feature {
|
|||
return "unknown";
|
||||
}
|
||||
const cos = (0, index_frontend_1.getCos)(origin);
|
||||
return cos.composeFileUrl(this.application.getApplication(), extraFile, style);
|
||||
return cos.composeFileUrl({
|
||||
application: this.application.getApplication(),
|
||||
extraFile: extraFile,
|
||||
style: style,
|
||||
cache: this.cache,
|
||||
});
|
||||
}
|
||||
getFileState(id) {
|
||||
if (this.files[id]) {
|
||||
|
|
@ -174,7 +184,13 @@ class ExtraFile extends Feature_1.Feature {
|
|||
this.fileUpLoad = up;
|
||||
try {
|
||||
const cos = (0, index_frontend_1.getCos)(newExtraFile.origin);
|
||||
await cos.upload(newExtraFile, up.uploadFile, file, this.uploadToAspect.bind(this), getPercent);
|
||||
await cos.upload({
|
||||
extraFile: newExtraFile,
|
||||
uploadFn: up.uploadFile,
|
||||
file: file,
|
||||
uploadToAspect: this.uploadToAspect.bind(this),
|
||||
getPercent: getPercent,
|
||||
});
|
||||
if (!cos.autoInform()) {
|
||||
await this.cache.exec('operate', {
|
||||
entity: 'extraFile',
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "mobile", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "mobile", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
|
|||
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
|
||||
entity: any;
|
||||
entityId: string;
|
||||
}, userIds?: string[]): Promise<1 | 0>;
|
||||
}, userIds?: string[]): Promise<0 | 1>;
|
||||
/**
|
||||
* 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成
|
||||
* 必须在entity的action的后trigger中调用
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { EntityDict } from '../oak-app-domain';
|
||||
import { BRC } from '..';
|
||||
import { Cache } from 'oak-frontend-base/es/features/cache';
|
||||
export type UploadFn = (file: File | string, name: string, // 文件的part name
|
||||
uploadUrl: string, // 上传的url
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
|
|
@ -26,11 +27,22 @@ export interface Cos<ED extends EntityDict> {
|
|||
* @param extraFile
|
||||
* @returns
|
||||
*/
|
||||
upload: (extraFile: ED['extraFile']['OpSchema'], uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function) => Promise<void>;
|
||||
upload: (options: {
|
||||
extraFile: ED['extraFile']['OpSchema'];
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}) => Promise<void>;
|
||||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
composeFileUrl: (application: Partial<ED['application']['Schema']>, extraFile: Partial<ED['extraFile']['OpSchema']>, style?: string) => string;
|
||||
composeFileUrl: (options: {
|
||||
application: Partial<ED['application']['Schema']>;
|
||||
extraFile: Partial<ED['extraFile']['OpSchema']>;
|
||||
cache: Cache<ED>;
|
||||
style?: string;
|
||||
}) => string;
|
||||
}
|
||||
export interface CosBackend<ED extends EntityDict> {
|
||||
name: string;
|
||||
|
|
@ -45,7 +57,12 @@ export interface CosBackend<ED extends EntityDict> {
|
|||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
composeFileUrlBackend: (application: ED['application']['Schema'], extraFile: ED['extraFile']['OpSchema'], context: BRC<ED>, style?: string) => Promise<string>;
|
||||
composeFileUrlBackend: (options: {
|
||||
application: ED['application']['Schema'];
|
||||
extraFile: ED['extraFile']['OpSchema'];
|
||||
context: BRC<ED>;
|
||||
style?: string;
|
||||
}) => Promise<string>;
|
||||
/**
|
||||
* 后台对upload是否成功不确定的文件,向OSS发起主动确认
|
||||
* @param extraFile
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class ALiYunBackend extends ALiYun implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,25 @@ class ALiYunBackend extends aliyun_1.default {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: aliyunCosConfig } = this.getConfig(application);
|
||||
if (aliyunCosConfig) {
|
||||
let bucket = aliyunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class ALiYun implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").AliCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ class ALiYun {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -59,7 +60,8 @@ class ALiYun {
|
|||
}
|
||||
throw new Exception_1.OakUploadException('文件上传阿里云失败');
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: aliyunCosConfig } = this.getConfig(application);
|
||||
if (aliyunCosConfig) {
|
||||
let bucket = aliyunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class CTYunBackend extends CTYun implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,25 @@ class CTYunBackend extends ctyun_1.default {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: ctYunCosConfig } = this.getConfig(application);
|
||||
if (ctYunCosConfig) {
|
||||
let bucket = ctYunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").CTYunCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ class CTYun {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -69,7 +70,8 @@ class CTYun {
|
|||
// 转换参数(如120w_120h_90q)由一个或多个键值对(以"_"连接)组成,“值”在前“键”在后,“值”为数字类型,“键”为一位字母。
|
||||
// 转换格式(如.jpg)是指定图片转换的输出格式,通过指定转换格式,可以对原图处理并返回指定的图片格式。支持的转换格式为: jpg、webp、png、bmp。
|
||||
// 对象存储文档 https://www.ctyun.cn/document/10026693/10026878
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: ctYunCosConfig } = this.getConfig(application);
|
||||
if (ctYunCosConfig) {
|
||||
let bucket = ctYunCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -36,5 +36,7 @@ function getCosBackend(origin) {
|
|||
async function composeFileUrlBackend(application, extraFile, context, style) {
|
||||
const { origin } = extraFile;
|
||||
const cos = CosBackendDict[origin];
|
||||
return cos.composeFileUrlBackend(application, extraFile, context, style);
|
||||
return cos.composeFileUrlBackend({
|
||||
application, extraFile, context, style
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { EntityDict } from '../../oak-app-domain';
|
||||
import { Cache } from 'oak-frontend-base/es/features/cache';
|
||||
import { Cos } from '../../types/Cos';
|
||||
/**
|
||||
* 注入一个其它OSS上实现的uploader类
|
||||
|
|
@ -6,4 +7,9 @@ import { Cos } from '../../types/Cos';
|
|||
*/
|
||||
export declare function registerCos<ED extends EntityDict>(clazz: new () => Cos<ED>): void;
|
||||
export declare function getCos<ED extends EntityDict>(origin: string): Cos<ED>;
|
||||
export declare function composeFileUrl<ED extends EntityDict>(application: Partial<ED['application']['Schema']>, extraFile: Partial<ED['extraFile']['OpSchema']>, style?: string): string;
|
||||
export declare function composeFileUrl<ED extends EntityDict>(options: {
|
||||
application: Partial<ED['application']['Schema']>;
|
||||
extraFile: Partial<ED['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
cache: Cache<ED>;
|
||||
}): string;
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ function getCos(origin) {
|
|||
(0, assert_1.assert)(CosDict.hasOwnProperty(origin));
|
||||
return CosDict[origin];
|
||||
}
|
||||
function composeFileUrl(application, extraFile, style) {
|
||||
const { origin } = extraFile;
|
||||
function composeFileUrl(options) {
|
||||
const { origin } = options.extraFile;
|
||||
const cos = CosDict[origin];
|
||||
return cos.composeFileUrl(application, extraFile, style);
|
||||
return cos.composeFileUrl(options);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import Local from './local';
|
|||
import { BRC } from '../..';
|
||||
export default class LocalBackend extends Local implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,23 @@ class LocalBackend extends local_1.default {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: localConfig } = this.getConfig(application);
|
||||
let bucket = localConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol, nginxPath } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}${nginxPath ? '/' + nginxPath : ''}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class Local implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").LocalCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ class Local {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
let result;
|
||||
const { applicationId, type, extra2, id } = extraFile;
|
||||
try {
|
||||
|
|
@ -47,8 +48,8 @@ class Local {
|
|||
throw new Exception_1.OakUploadException('文件上传服务器失败');
|
||||
}
|
||||
}
|
||||
composeFileUrl(application, extraFile, style //多媒体样式
|
||||
) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: localConfig } = this.getConfig(application);
|
||||
let bucket = localConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import Qiniu from './qiniu';
|
|||
import { BRC } from '../..';
|
||||
export default class QiniuBackend extends Qiniu implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -14,8 +14,25 @@ class QiniuBackend extends qiniu_1.default {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: qiniuCosConfig } = this.getConfig(application);
|
||||
if (qiniuCosConfig) {
|
||||
let bucket = qiniuCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class Qiniu implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").QiniuCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ class Qiniu {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -64,8 +65,8 @@ class Qiniu {
|
|||
// 对于图片文件 1.png ,访问样式链接 https://{domain}/1.png-small.jpg,即可获得处理后的 jpg 格式图片
|
||||
// "-"是默认的样式分隔符,
|
||||
// 查看文档 https://developer.qiniu.com/kodo/8558/set-the-picture-style
|
||||
composeFileUrl(application, extraFile, style //多媒体样式
|
||||
) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: qiniuCosConfig } = this.getConfig(application);
|
||||
if (qiniuCosConfig) {
|
||||
let bucket = qiniuCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class S3Backend extends S3 implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -22,8 +22,30 @@ class S3Backend extends s3_1.default {
|
|||
endpoint,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: s3CosConfig, endpoint } = this.getConfig(application);
|
||||
if (s3CosConfig) {
|
||||
let bucket = s3CosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol, pathStyle } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
const key = this.formKey(extraFile);
|
||||
// 如果使用 pathStyle (Minio 常用)
|
||||
if (pathStyle && endpoint) {
|
||||
return `${protocol2}//${domain}/${bucket.name}/${key}${style ? style : ''}`;
|
||||
}
|
||||
// 否则使用虚拟主机风格 (AWS S3 默认)
|
||||
return `${protocol2}//${domain}/${key}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,16 @@ export default class S3 implements Cos<EntityDict> {
|
|||
defaultBucket: string;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ class S3 {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -54,7 +55,8 @@ class S3 {
|
|||
}
|
||||
throw new Exception_1.OakUploadException('文件上传S3失败');
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: s3CosConfig, endpoint } = this.getConfig(application);
|
||||
if (s3CosConfig) {
|
||||
let bucket = s3CosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class TencentYunBackend extends TencentYun implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,25 @@ class TencentYunBackend extends tencent_1.default {
|
|||
instance,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
const { config: tencentCosConfig } = this.getConfig(application);
|
||||
if (tencentCosConfig) {
|
||||
let bucket = tencentCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
if (bucket) {
|
||||
const { domain, protocol } = bucket;
|
||||
let protocol2 = protocol;
|
||||
if (protocol instanceof Array) {
|
||||
// protocol存在https: 说明域名有证书
|
||||
const index = protocol.includes('https:')
|
||||
? protocol.findIndex((ele) => ele === 'https:')
|
||||
: 0;
|
||||
protocol2 = protocol[index];
|
||||
}
|
||||
return `${protocol2}//${domain}/${this.formKey(extraFile)}${style ? style : ''}`;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
const { bucket } = extraFile;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ export default class TencentYun implements Cos<EntityDict> {
|
|||
account: import("../../types/Config").TencentCloudConfig;
|
||||
};
|
||||
protected formKey(extraFile: Partial<OpSchema>): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@ class TencentYun {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -63,7 +64,8 @@ class TencentYun {
|
|||
}
|
||||
throw new Exception_1.OakUploadException('文件上传腾讯云失败');
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
const { config: tencentCosConfig } = this.getConfig(application);
|
||||
if (tencentCosConfig) {
|
||||
let bucket = tencentCosConfig.buckets.find((ele) => ele.name === extraFile.bucket);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import Unknown from './unknown';
|
|||
import { BRC } from '../..';
|
||||
export default class UnknownBackend extends Unknown implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -6,8 +6,9 @@ class UnknownBackend extends unknown_1.default {
|
|||
getConfigAndInstance(application) {
|
||||
return {};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
return extraFile.extra1;
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,16 @@ export default class Unknown implements Cos<EntityDict> {
|
|||
autoInform(): boolean;
|
||||
protected getConfig(application: EntityDict['application']['Schema']): {};
|
||||
protected formKey(extraFile: OpSchema): string;
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,12 +15,13 @@ class Unknown {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
throw new Exception_1.OakUploadException('unknown未实现上传');
|
||||
}
|
||||
// 类型unknown 只能从extra1取值
|
||||
composeFileUrl(application, extraFile, style //多媒体样式
|
||||
) {
|
||||
composeFileUrl(options) {
|
||||
const { application, extraFile, style } = options;
|
||||
return extraFile.extra1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ import { OpSchema } from '../../oak-app-domain/ExtraFile/Schema';
|
|||
import { BRC } from '../..';
|
||||
export default class WechatBackend extends Wechat implements CosBackend<EntityDict> {
|
||||
private getConfigAndInstance;
|
||||
composeFileUrlBackend(application: EntityDict['application']['Schema'], extraFile: OpSchema, context: BRC<EntityDict>, style?: string): Promise<string>;
|
||||
composeFileUrlBackend(options: {
|
||||
application: EntityDict['application']['Schema'];
|
||||
extraFile: OpSchema;
|
||||
context: BRC<EntityDict>;
|
||||
style?: string;
|
||||
}): Promise<string>;
|
||||
formUploadMeta(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<void>;
|
||||
checkWhetherSuccess(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<boolean>;
|
||||
removeFile(application: EntityDict['application']['Schema'], extraFile: OpSchema): Promise<any>;
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@ class WechatBackend extends wechat_1.default {
|
|||
type,
|
||||
};
|
||||
}
|
||||
async composeFileUrlBackend(application, extraFile, context, style) {
|
||||
return this.composeFileUrl(application, extraFile, style);
|
||||
async composeFileUrlBackend(options) {
|
||||
const { application, extraFile, context, style } = options;
|
||||
return '';
|
||||
}
|
||||
async formUploadMeta(application, extraFile) {
|
||||
// 微信上传素材库
|
||||
|
|
|
|||
|
|
@ -9,6 +9,16 @@ export default class Wechat implements Cos<EntityDict> {
|
|||
config: WechatPublicConfig;
|
||||
type: "wechatPublic";
|
||||
};
|
||||
upload(extraFile: OpSchema, uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
upload(options: {
|
||||
extraFile: OpSchema;
|
||||
uploadFn: UploadFn;
|
||||
file: string | File;
|
||||
uploadToAspect?: UploadToAspect;
|
||||
getPercent?: Function;
|
||||
}): Promise<void>;
|
||||
composeFileUrl(options: {
|
||||
application: Partial<EntityDict['application']['Schema']>;
|
||||
extraFile: Partial<EntityDict['extraFile']['OpSchema']>;
|
||||
style?: string;
|
||||
}): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ class Wechat {
|
|||
type: application.type,
|
||||
};
|
||||
}
|
||||
async upload(extraFile, uploadFn, file, uploadToAspect, getPercent) {
|
||||
async upload(options) {
|
||||
const { extraFile, uploadFn, file, uploadToAspect, getPercent } = options;
|
||||
let result;
|
||||
const { applicationId, type, extra2, id } = extraFile;
|
||||
(0, assert_1.assert)(type === 'image');
|
||||
|
|
@ -40,7 +41,7 @@ class Wechat {
|
|||
throw new Exception_1.OakUploadException('文件上传微信失败');
|
||||
}
|
||||
}
|
||||
composeFileUrl(application, extraFile, style) {
|
||||
composeFileUrl(options) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getConfig = void 0;
|
||||
exports.getConfig = getConfig;
|
||||
const assert_1 = require("oak-domain/lib/utils/assert");
|
||||
const Exception_1 = require("oak-domain/lib/types/Exception");
|
||||
const oak_external_sdk_1 = require("oak-external-sdk");
|
||||
|
|
@ -84,4 +84,3 @@ function getConfig(systemConfig, service, origin) {
|
|||
}
|
||||
}
|
||||
}
|
||||
exports.getConfig = getConfig;
|
||||
|
|
|
|||
Loading…
Reference in New Issue