diff --git a/packages/http-client-csharp/emitter/src/lib/operation-converter.ts b/packages/http-client-csharp/emitter/src/lib/operation-converter.ts index bada9905120..766c2b2866a 100644 --- a/packages/http-client-csharp/emitter/src/lib/operation-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/operation-converter.ts @@ -317,6 +317,14 @@ function updateMethodParameter( operationHttpParameter: SdkHttpParameter | SdkModelPropertyType, rootApiVersions: string[], ): void { + // for content type parameter + if (isContentType(operationHttpParameter)) { + methodParameter.type = fromSdkType( + sdkContext, + operationHttpParameter.type, + operationHttpParameter, + ); + } methodParameter.serializedName = getNameInRequest(operationHttpParameter); methodParameter.location = getParameterLocation(operationHttpParameter); methodParameter.scope = getParameterScope( diff --git a/packages/http-client-csharp/emitter/src/lib/type-converter.ts b/packages/http-client-csharp/emitter/src/lib/type-converter.ts index f3a008ed668..7107cc7d4b1 100644 --- a/packages/http-client-csharp/emitter/src/lib/type-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/type-converter.ts @@ -307,7 +307,7 @@ function createEnumType( crossLanguageDefinitionId: sdkType.kind === "enum" ? sdkType.crossLanguageDefinitionId : "", valueType: sdkType.kind === "enum" - ? (fromSdkType(sdkContext, sdkType.valueType) as InputPrimitiveType) + ? fromSdkType(sdkContext, sdkType.valueType) : fromSdkBuiltInType(sdkContext, sdkType.valueType), values: values, // constantType.access, TODO - constant type now does not have access. TCGC will add it later diff --git a/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts b/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts index bf8958e71a9..ddaea32c419 100644 --- a/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts @@ -390,6 +390,14 @@ describe("Operation Converter", () => { const method = root.clients[0].methods[0]; ok(method); + const contentTypeMethodParam = method.parameters.find((p) => p.name === "contentType"); + ok(contentTypeMethodParam, "Content-Type parameter should exist in service method"); + strictEqual( + contentTypeMethodParam.type.kind, + "constant", + "Content-type should remain a constant type, not transformed to enum", + ); + // validate operation const operation = method.operation; ok(operation); diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json index 43e7b9552c0..e68a2e721e8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json @@ -4717,7 +4717,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "90" + "$ref": "86" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/tspCodeModel.json index bf92ec111b2..38c893f0473 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/tspCodeModel.json @@ -2278,7 +2278,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "21" + "$ref": "19" }, "location": "Header", "isApiVersion": false, @@ -2398,7 +2398,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "25" + "$ref": "23" }, "location": "Header", "isApiVersion": false, @@ -2519,7 +2519,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "29" + "$ref": "27" }, "location": "Header", "isApiVersion": false, @@ -2641,7 +2641,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "33" + "$ref": "31" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/tspCodeModel.json index 950f7f2562f..476b957e44c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/tspCodeModel.json @@ -876,7 +876,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "9" + "$ref": "5" }, "location": "Header", "isApiVersion": false, @@ -1033,7 +1033,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "15" + "$ref": "11" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/tspCodeModel.json index 18576b03aa8..fcea8fff72f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/tspCodeModel.json @@ -265,7 +265,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "3" + "$ref": "1" }, "location": "Header", "isApiVersion": false, @@ -480,7 +480,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "11" + "$ref": "9" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/tspCodeModel.json index 4732c4fe160..9c871c88404 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/tspCodeModel.json @@ -2084,7 +2084,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "5" + "$ref": "3" }, "location": "Header", "isApiVersion": false, @@ -2198,7 +2198,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "9" + "$ref": "7" }, "location": "Header", "isApiVersion": false, @@ -2312,7 +2312,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "13" + "$ref": "11" }, "location": "Header", "isApiVersion": false, @@ -2426,7 +2426,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "17" + "$ref": "15" }, "location": "Header", "isApiVersion": false, @@ -2540,7 +2540,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "21" + "$ref": "19" }, "location": "Header", "isApiVersion": false, @@ -2654,7 +2654,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "25" + "$ref": "23" }, "location": "Header", "isApiVersion": false, @@ -2768,7 +2768,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "29" + "$ref": "27" }, "location": "Header", "isApiVersion": false, @@ -2882,7 +2882,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "33" + "$ref": "31" }, "location": "Header", "isApiVersion": false, @@ -2996,7 +2996,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "37" + "$ref": "35" }, "location": "Header", "isApiVersion": false, @@ -3157,7 +3157,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "41" + "$ref": "39" }, "location": "Header", "isApiVersion": false, @@ -3318,7 +3318,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "45" + "$ref": "43" }, "location": "Header", "isApiVersion": false, @@ -3432,7 +3432,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "49" + "$ref": "47" }, "location": "Header", "isApiVersion": false, @@ -3546,7 +3546,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "53" + "$ref": "51" }, "location": "Header", "isApiVersion": false, @@ -3708,7 +3708,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "57" + "$ref": "55" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/tspCodeModel.json index 5c38b68e159..0d029e9ad26 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/tspCodeModel.json @@ -562,7 +562,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "20" + "$ref": "18" }, "location": "Header", "isApiVersion": false, @@ -674,7 +674,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "24" + "$ref": "22" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/tspCodeModel.json index 81294dfe614..e3b49081a5a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/tspCodeModel.json @@ -444,7 +444,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "16" + "$ref": "14" }, "location": "Header", "isApiVersion": false, @@ -560,7 +560,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "20" + "$ref": "18" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/tspCodeModel.json index 606d8272703..cd72d77e3c2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/tspCodeModel.json @@ -1576,7 +1576,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "7" + "$ref": "5" }, "location": "Header", "isApiVersion": false, @@ -1692,7 +1692,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "11" + "$ref": "9" }, "location": "Header", "isApiVersion": false, @@ -2026,7 +2026,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "19" + "$ref": "17" }, "location": "Header", "isApiVersion": false, @@ -2142,7 +2142,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "23" + "$ref": "21" }, "location": "Header", "isApiVersion": false, @@ -2476,7 +2476,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "31" + "$ref": "29" }, "location": "Header", "isApiVersion": false, @@ -2592,7 +2592,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "35" + "$ref": "33" }, "location": "Header", "isApiVersion": false, @@ -2926,7 +2926,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "43" + "$ref": "41" }, "location": "Header", "isApiVersion": false, @@ -3042,7 +3042,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "47" + "$ref": "45" }, "location": "Header", "isApiVersion": false, @@ -3376,7 +3376,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "55" + "$ref": "53" }, "location": "Header", "isApiVersion": false, @@ -3492,7 +3492,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "59" + "$ref": "57" }, "location": "Header", "isApiVersion": false, @@ -3826,7 +3826,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "67" + "$ref": "65" }, "location": "Header", "isApiVersion": false, @@ -3942,7 +3942,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "71" + "$ref": "69" }, "location": "Header", "isApiVersion": false, @@ -4276,7 +4276,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "79" + "$ref": "77" }, "location": "Header", "isApiVersion": false, @@ -4392,7 +4392,7 @@ "serializedName": "Content-Type", "doc": "content-type is application/merge-patch+json", "type": { - "$ref": "83" + "$ref": "81" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/tspCodeModel.json index 7755a14604f..c5f20e56718 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/tspCodeModel.json @@ -636,7 +636,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "7" + "$ref": "5" }, "location": "Header", "isApiVersion": false, @@ -905,7 +905,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "15" + "$ref": "13" }, "location": "Header", "isApiVersion": false, @@ -1174,7 +1174,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "23" + "$ref": "21" }, "location": "Header", "isApiVersion": false, @@ -1439,7 +1439,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "31" + "$ref": "29" }, "location": "Header", "isApiVersion": false, @@ -1784,7 +1784,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "39" + "$ref": "37" }, "location": "Header", "isApiVersion": false, @@ -2128,7 +2128,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "45" + "$ref": "49" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/tspCodeModel.json index eafb3020517..44b9222e057 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/tspCodeModel.json @@ -232,7 +232,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "10" + "$ref": "4" }, "location": "Header", "isApiVersion": false, diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/tspCodeModel.json index b3c71751fc8..4efc88d0634 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/tspCodeModel.json @@ -248,7 +248,7 @@ "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "11" + "$ref": "5" }, "location": "Header", "isApiVersion": false,