From 484302fa71a5621da5535c8b49927936d64e5f08 Mon Sep 17 00:00:00 2001 From: Deep Singhvi Date: Wed, 12 Feb 2025 21:01:46 -0500 Subject: [PATCH] fix(csharp): literal support in wrapped requests (#5982) --- .../context/AbstractCsharpGeneratorContext.ts | 16 ++++++++++++++-- .../csharp/model/src/object/ObjectGenerator.ts | 11 ++--------- .../wrapped-request/WrappedRequestGenerator.ts | 8 ++++++-- generators/csharp/sdk/versions.yml | 8 ++++++++ .../SeedAnyAuth/Auth/Requests/GetTokenRequest.cs | 4 ++-- .../User/Requests/CreateUserRequest.cs | 4 ++-- .../Requests/SendLiteralsInlinedRequest.cs | 6 +++--- .../Auth/Requests/GetTokenRequest.cs | 4 ++-- .../Auth/Requests/RefreshTokenRequest.cs | 4 ++-- .../Auth/Requests/GetTokenRequest.cs | 2 +- .../Auth/Requests/GetTokenRequest.cs | 4 ++-- .../Auth/Requests/RefreshTokenRequest.cs | 4 ++-- .../Auth/Requests/GetTokenRequest.cs | 4 ++-- .../Auth/Requests/GetTokenRequest.cs | 4 ++-- .../Auth/Requests/RefreshTokenRequest.cs | 4 ++-- .../Dummy/Requests/GenerateStreamRequest.cs | 2 +- .../Dummy/Requests/Generateequest.cs | 2 +- 17 files changed, 54 insertions(+), 37 deletions(-) diff --git a/generators/csharp/codegen/src/context/AbstractCsharpGeneratorContext.ts b/generators/csharp/codegen/src/context/AbstractCsharpGeneratorContext.ts index 3da93d823c7..b9f64e57728 100644 --- a/generators/csharp/codegen/src/context/AbstractCsharpGeneratorContext.ts +++ b/generators/csharp/codegen/src/context/AbstractCsharpGeneratorContext.ts @@ -453,11 +453,23 @@ export abstract class AbstractCsharpGeneratorContext< /** * Returns the literal value from a Type Reference (doesn't unbox containers to find a literal). */ - public getLiteralFromTypeReference({ + public getLiteralInitializerFromTypeReference({ typeReference }: { typeReference: TypeReference; - }): string | boolean | undefined { + }): csharp.CodeBlock | undefined { + const literalValue = this.getLiteralValue(typeReference); + if (literalValue != null) { + return csharp.codeblock( + typeof literalValue === "boolean" + ? `${literalValue.toString().toLowerCase()}` + : `"${literalValue}"` + ); + } + return undefined; + } + + private getLiteralValue(typeReference: TypeReference): string | boolean | undefined { if (typeReference.type === "container" && typeReference.container.type === "literal") { const literal = typeReference.container.literal; switch (literal.type) { diff --git a/generators/csharp/model/src/object/ObjectGenerator.ts b/generators/csharp/model/src/object/ObjectGenerator.ts index 67129684066..fc61be85c3a 100644 --- a/generators/csharp/model/src/object/ObjectGenerator.ts +++ b/generators/csharp/model/src/object/ObjectGenerator.ts @@ -41,7 +41,7 @@ export class ObjectGenerator extends FileGenerator { const fieldType = this.context.csharpTypeMapper.convert({ reference: property.valueType }); - const maybeLiteralInitializer = this.context.getLiteralFromTypeReference({ + const maybeLiteralInitializer = this.context.getLiteralInitializerFromTypeReference({ typeReference: property.valueType }); @@ -55,14 +55,7 @@ export class ObjectGenerator extends FileGenerator { for (const property of [...request.properties, ...(request.extendedProperties ?? [])]) { const propertyName = property.name.name.pascalCase.safeName; + const maybeLiteralInitializer = this.context.getLiteralInitializerFromTypeReference({ + typeReference: property.valueType + }); class_.addField( csharp.field({ name: propertyName, @@ -122,7 +125,8 @@ export class WrappedRequestGenerator extends FileGenerator