From 2c8d4e21850305c0d0bb282d62f00ce60e23759d Mon Sep 17 00:00:00 2001 From: Wei Hu Date: Tue, 13 Aug 2024 19:00:59 +0800 Subject: [PATCH] Fix endpoint handling (#4164) --- .../emitter/src/lib/client-model-builder.ts | 7 ++----- .../http-client-csharp/emitter/src/lib/converter.ts | 10 +++++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts b/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts index 8cefab4c4..a93a6f273 100644 --- a/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts +++ b/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts @@ -19,6 +19,7 @@ import { InputOperationParameterKind } from "../type/input-operation-parameter-k import { InputParameter } from "../type/input-parameter.js"; import { InputEnumType, InputModelType, InputType } from "../type/input-type.js"; import { RequestLocation } from "../type/request-location.js"; +import { fromSdkType } from "./converter.js"; import { Logger } from "./logger.js"; import { navigateModels } from "./model.js"; import { fromSdkServiceMethod, getParameterDefaultValue } from "./operation-converter.js"; @@ -153,11 +154,7 @@ export function createModel(sdkContext: SdkContext): CodeMode Name: "url", CrossLanguageDefinitionId: "TypeSpec.url", } - : { - Kind: "string", - Name: "string", - CrossLanguageDefinitionId: "TypeSpec.string", - }; + : fromSdkType(parameter.type, sdkContext, modelMap, enumMap); // TODO: consolidate with converter.fromSdkEndpointType parameters.push({ Name: parameter.name, NameInRequest: parameter.serializedName, diff --git a/packages/http-client-csharp/emitter/src/lib/converter.ts b/packages/http-client-csharp/emitter/src/lib/converter.ts index 6ba69324f..d7c5a80e3 100644 --- a/packages/http-client-csharp/emitter/src/lib/converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/converter.ts @@ -53,6 +53,7 @@ export function fromSdkType( } as InputNullableType; } if (sdkType.kind === "model") return fromSdkModelType(sdkType, context, models, enums); + if (sdkType.kind === "endpoint") return fromSdkEndpointType(); if (sdkType.kind === "enum") return fromSdkEnumType(sdkType, context, enums); if (sdkType.kind === "enumvalue") return fromSdkEnumValueTypeToConstantType(sdkType, context, enums, literalTypeContext); @@ -68,7 +69,6 @@ export function fromSdkType( // TODO -- endpoint and credential are handled separately in emitter, since we have specific locations for them in input model. // We can handle unify the way we handle them in the future, probably by chaning the input model schema and do the conversion in generator. if (sdkType.kind === "credential") throw new Error("Credential type is not supported yet."); - if (sdkType.kind === "endpoint") throw new Error("Endpoint type is not supported yet."); return fromSdkBuiltInType(sdkType); } @@ -381,3 +381,11 @@ function fromSdkArrayType( CrossLanguageDefinitionId: arrayType.crossLanguageDefinitionId, }; } + +function fromSdkEndpointType(): InputPrimitiveType { + return { + Kind: "string", + Name: "string", + CrossLanguageDefinitionId: "TypeSpec.string", + }; +}