From e025a3b1dc6127b7696981ed6bfc39edfcaa6092 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 4 May 2023 12:09:08 +0300 Subject: [PATCH 1/2] fix IRemoteStreamContent issue on generate service --- .../packages/schematics/src/constants/volo.ts | 5 ++++- .../schematics/src/enums/binding-source-id.ts | 1 + .../packages/schematics/src/models/method.ts | 3 ++- .../packages/schematics/src/utils/service.ts | 16 +++++++++++++++- 4 files changed, 22 insertions(+), 3 deletions(-) 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..22e17233a6 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,14 @@ export function createActionToSignatureMapper() { ...action.parametersOnMethod, ...(versionParameter ? [versionParameter] : []), ]; + signature.parameters = parameters.map(p => { + const isFormData = isRemoteStreamContent(p.typeSimple); + if (isFormData) { + const formDataParameter = new Property({ name: p.name, type: 'FormData' }); + formDataParameter.setOptional(false); + return formDataParameter; + } const type = adaptType(p.typeSimple); const parameter = new Property({ name: p.name, type }); parameter.setDefault(p.defaultValue); @@ -112,6 +122,10 @@ export function createActionToSignatureMapper() { }; } +export function isRemoteStreamContent(type: string) { + return VOLO_REMOTE_STREAM_CONTENT.some(x => x === type); +} + function getMethodNameFromAction(action: Action): string { return action.uniqueName.split('Async')[0]; } From 98fa8e06419e7f6bc5468762548908f9b4f20225 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 4 May 2023 18:05:53 +0300 Subject: [PATCH 2/2] fix IRemoteStreamContent[] issue on generate service --- .../packages/schematics/src/utils/service.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/service.ts b/npm/ng-packs/packages/schematics/src/utils/service.ts index 22e17233a6..b32dd5fba5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/service.ts +++ b/npm/ng-packs/packages/schematics/src/utils/service.ts @@ -104,11 +104,10 @@ export function createActionToSignatureMapper() { ]; signature.parameters = parameters.map(p => { - const isFormData = isRemoteStreamContent(p.typeSimple); - if (isFormData) { - const formDataParameter = new Property({ name: p.name, type: 'FormData' }); - formDataParameter.setOptional(false); - return formDataParameter; + 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 }); @@ -126,6 +125,10 @@ 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]; }