Skip to content

Commit f8e4352

Browse files
sbwardkpy3
authored andcommitted
[csharp] Add useVirtualForHooks option (OpenAPITools#20705)
1 parent 2942982 commit f8e4352

File tree

4 files changed

+13
-4
lines changed

4 files changed

+13
-4
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,9 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case,
286286
public static final String SUPPORTS_ASYNC = "supportsAsync";
287287
public static final String SUPPORTS_ASYNC_DESC = "Generate code that supports async operations.";
288288

289+
public static final String USE_VIRTUAL_FOR_HOOKS = "useVirtualForHooks";
290+
public static final String USE_VIRTUAL_FOR_HOOKS_DESC = "Generate code that exposes public virtual hooks on ApiClient to customize low-level HTTP requests.";
291+
289292
public static final String EXCLUDE_TESTS = "excludeTests";
290293
public static final String EXCLUDE_TESTS_DESC = "Specifies that no tests are to be generated.";
291294

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
108108

109109
protected boolean supportsRetry = Boolean.TRUE;
110110
protected boolean supportsAsync = Boolean.TRUE;
111+
protected boolean useVirtualForHooks = Boolean.FALSE;
111112
protected boolean netStandard = Boolean.FALSE;
112113
protected boolean supportsFileParameters = Boolean.TRUE;
113114
protected boolean supportsDateOnly = Boolean.FALSE;
@@ -853,6 +854,7 @@ public void processOpts() {
853854
syncBooleanProperty(additionalProperties, CodegenConstants.EQUATABLE, this::setEquatable, this.equatable);
854855
syncBooleanProperty(additionalProperties, CodegenConstants.VALIDATABLE, this::setValidatable, this.validatable);
855856
syncBooleanProperty(additionalProperties, CodegenConstants.SUPPORTS_ASYNC, this::setSupportsAsync, this.supportsAsync);
857+
syncBooleanProperty(additionalProperties, CodegenConstants.USE_VIRTUAL_FOR_HOOKS, this::setUseVirtualForHooks, this.useVirtualForHooks);
856858
syncBooleanProperty(additionalProperties, SUPPORTS_RETRY, this::setSupportsRetry, this.supportsRetry);
857859
syncBooleanProperty(additionalProperties, CodegenConstants.OPTIONAL_METHOD_ARGUMENT, this::setOptionalMethodArgumentFlag, optionalMethodArgumentFlag);
858860
syncBooleanProperty(additionalProperties, CodegenConstants.NON_PUBLIC_API, this::setNonPublicApi, isNonPublicApi());
@@ -1216,6 +1218,10 @@ public void setSupportsAsync(Boolean supportsAsync) {
12161218
this.supportsAsync = supportsAsync;
12171219
}
12181220

1221+
public void setUseVirtualForHooks(Boolean useVirtualForHooks) {
1222+
this.useVirtualForHooks = useVirtualForHooks;
1223+
}
1224+
12191225
public void setSupportsFileParameters(Boolean supportsFileParameters) {
12201226
this.supportsFileParameters = supportsFileParameters;
12211227
}

modules/openapi-generator/src/main/resources/csharp/ApiClient.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,14 @@ namespace {{packageName}}.Client
191191
/// Allows for extending request processing for <see cref="ApiClient"/> generated code.
192192
/// </summary>
193193
/// <param name="request">The RestSharp request object</param>
194-
partial void InterceptRequest(RestRequest request);
194+
{{#useVirtualForHooks}}public virtual{{/useVirtualForHooks}}{{^useVirtualForHooks}}partial{{/useVirtualForHooks}} void InterceptRequest(RestRequest request){{#useVirtualForHooks}} { }{{/useVirtualForHooks}}{{^useVirtualForHooks}};{{/useVirtualForHooks}}
195195

196196
/// <summary>
197197
/// Allows for extending response processing for <see cref="ApiClient"/> generated code.
198198
/// </summary>
199199
/// <param name="request">The RestSharp request object</param>
200200
/// <param name="response">The RestSharp response object</param>
201-
partial void InterceptResponse(RestRequest request, RestResponse response);
201+
{{#useVirtualForHooks}}public virtual{{/useVirtualForHooks}}{{^useVirtualForHooks}}partial{{/useVirtualForHooks}} void InterceptResponse(RestRequest request, RestResponse response){{#useVirtualForHooks}} { }{{/useVirtualForHooks}}{{^useVirtualForHooks}};{{/useVirtualForHooks}}
202202

203203
/// <summary>
204204
/// Initializes a new instance of the <see cref="ApiClient" />, defaulting to the global configurations' base url.

modules/openapi-generator/src/main/resources/csharp/libraries/httpclient/ApiClient.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,8 +419,8 @@ namespace {{packageName}}.Client
419419
return request;
420420
}
421421

422-
partial void InterceptRequest(HttpRequestMessage req);
423-
partial void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response);
422+
{{#useVirtualForHooks}}public virtual{{/useVirtualForHooks}}{{^useVirtualForHooks}}partial{{/useVirtualForHooks}} void InterceptRequest(HttpRequestMessage req){{#useVirtualForHooks}} { }{{/useVirtualForHooks}}{{^useVirtualForHooks}};{{/useVirtualForHooks}}
423+
{{#useVirtualForHooks}}public virtual{{/useVirtualForHooks}}{{^useVirtualForHooks}}partial{{/useVirtualForHooks}} void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response){{#useVirtualForHooks}} { }{{/useVirtualForHooks}}{{^useVirtualForHooks}};{{/useVirtualForHooks}}
424424

425425
private async Task<ApiResponse<T>> ToApiResponse<T>(HttpResponseMessage response, object responseData, Uri uri)
426426
{

0 commit comments

Comments
 (0)