diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index d45a4b9e72..f42f4ed196 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -1,2 +1,5 @@ export const VOLO_REGEX = /^Volo\.Abp\.(Application\.Dtos|ObjectExtending)/; -export const VOLO_REMOTE_STREAM_CONTENT = 'Volo.Abp.Content.IRemoteStreamContent' +export const VOLO_REMOTE_STREAM_CONTENT = [ + 'Volo.Abp.Content.IRemoteStreamContent', + 'Volo.Abp.Content.RemoteStreamContent', +]; diff --git a/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts b/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts index 1e4e65c5f5..308b8dfc32 100644 --- a/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts +++ b/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts @@ -3,4 +3,5 @@ export enum eBindingSourceId { Model = 'ModelBinding', Path = 'Path', Query = 'Query', + FormFile = 'FormFile', } diff --git a/npm/ng-packs/packages/schematics/src/models/method.ts b/npm/ng-packs/packages/schematics/src/models/method.ts index 6e86853ec0..043df6d458 100644 --- a/npm/ng-packs/packages/schematics/src/models/method.ts +++ b/npm/ng-packs/packages/schematics/src/models/method.ts @@ -59,6 +59,7 @@ export class Body { case eBindingSourceId.Query: this.params.push(paramName === value ? value : `${getParamName(paramName)}: ${value}`); break; + case eBindingSourceId.FormFile: case eBindingSourceId.Body: this.body = value; break; @@ -78,7 +79,7 @@ export class Body { } isBlobMethod() { - return this.responseTypeWithNamespace === VOLO_REMOTE_STREAM_CONTENT; + return VOLO_REMOTE_STREAM_CONTENT.some(x => x === this.responseTypeWithNamespace); } private setUrlQuotes() { diff --git a/npm/ng-packs/packages/schematics/src/utils/service.ts b/npm/ng-packs/packages/schematics/src/utils/service.ts index 0b633a8dd5..b32dd5fba5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/service.ts +++ b/npm/ng-packs/packages/schematics/src/utils/service.ts @@ -55,9 +55,12 @@ export function createControllerToServiceMapper({ function getTypesWithoutIRemoteStreamContent(types: Record) { const newType = { ...types }; - delete newType[VOLO_REMOTE_STREAM_CONTENT]; + VOLO_REMOTE_STREAM_CONTENT.forEach(fileType => { + delete newType[fileType]; + }); return newType; } + function sortMethods(methods: Method[]) { methods.sort((a, b) => (a.signature.name > b.signature.name ? 1 : -1)); } @@ -99,7 +102,13 @@ export function createActionToSignatureMapper() { ...action.parametersOnMethod, ...(versionParameter ? [versionParameter] : []), ]; + signature.parameters = parameters.map(p => { + const isFormData = isRemoteStreamContent(p.type); + const isFormArray = isRemoteStreamContentArray(p.type); + if (isFormData || isFormArray) { + return new Property({ name: p.name, type: 'FormData' }); + } const type = adaptType(p.typeSimple); const parameter = new Property({ name: p.name, type }); parameter.setDefault(p.defaultValue); @@ -112,6 +121,14 @@ export function createActionToSignatureMapper() { }; } +export function isRemoteStreamContent(type: string) { + return VOLO_REMOTE_STREAM_CONTENT.some(x => x === type); +} + +export function isRemoteStreamContentArray(type: string) { + return VOLO_REMOTE_STREAM_CONTENT.map(x => `${x}[]`).some(x => x === type); +} + function getMethodNameFromAction(action: Action): string { return action.uniqueName.split('Async')[0]; }