Skip to content

Commit 363eaa6

Browse files
committed
Create and use a memory stream for binary model types
1 parent 88f5392 commit 363eaa6

2 files changed

Lines changed: 44 additions & 4 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
// This logic may be modified with the AsModel.mustache template
22
return Is{{vendorExtensions.x-http-status}}
3-
? System.Text.Json.JsonSerializer.Deserialize<{{#isModel}}{{^containerType}}{{packageName}}.{{modelPackage}}.{{/containerType}}{{/isModel}}{{{dataType}}}>(RawContent, _jsonSerializerOptions)
3+
? {{#isBinary}}ContentStream{{/isBinary}}{{^isBinary}}System.Text.Json.JsonSerializer.Deserialize<{{#isModel}}{{^containerType}}{{packageName}}.{{modelPackage}}.{{/containerType}}{{/isModel}}{{{dataType}}}>(RawContent, _jsonSerializerOptions){{/isBinary}}
44
: {{#net60OrLater}}null{{/net60OrLater}}{{^net60OrLater}}default{{/net60OrLater}};

modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -624,11 +624,35 @@ namespace {{packageName}}.{{apiPackage}}
624624

625625
using (HttpResponseMessage httpResponseMessageLocalVar = await HttpClient.SendAsync(httpRequestMessageLocalVar, cancellationToken).ConfigureAwait(false))
626626
{
627-
string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync({{#net60OrLater}}cancellationToken{{/net60OrLater}}).ConfigureAwait(false);
628-
629627
ILogger<{{#vendorExtensions.x-duplicates}}{{.}}.{{/vendorExtensions.x-duplicates}}{{operationId}}ApiResponse> apiResponseLoggerLocalVar = LoggerFactory.CreateLogger<{{#vendorExtensions.x-duplicates}}{{.}}.{{/vendorExtensions.x-duplicates}}{{operationId}}ApiResponse>();
628+
{{#vendorExtensions.x-duplicates}}{{.}}.{{/vendorExtensions.x-duplicates}}{{operationId}}ApiResponse apiResponseLocalVar;
629+
630+
switch ((int)httpResponseMessageLocalVar.StatusCode) {
631+
{{#responses}}
632+
{{#isBinary}}
633+
case ({{code}}):
634+
{{/isBinary}}
635+
{{/responses}}
636+
{{#responses}}
637+
{{#isBinary}}
638+
{{#-first}}
639+
{
640+
byte[] responseBytesArrayLocalVar = await httpResponseMessageLocalVar.Content.ReadAsByteArrayAsync({{#net60OrLater}}cancellationToken{{/net60OrLater}}).ConfigureAwait(false);
641+
System.IO.Stream responseContentStreamLocalVar = new System.IO.MemoryStream(responseBytesArrayLocalVar);
642+
apiResponseLocalVar = new{{^net60OrLater}} {{operationId}}ApiResponse{{/net60OrLater}}(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentStreamLocalVar, "{{{path}}}", requestedAtLocalVar, _jsonSerializerOptions);
630643

631-
{{#vendorExtensions.x-duplicates}}{{.}}.{{/vendorExtensions.x-duplicates}}{{operationId}}ApiResponse apiResponseLocalVar = new{{^net60OrLater}} {{operationId}}ApiResponse{{/net60OrLater}}(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "{{{path}}}", requestedAtLocalVar, _jsonSerializerOptions);
644+
break;
645+
}
646+
{{/-first}}
647+
{{/isBinary}}
648+
{{/responses}}
649+
default: {
650+
string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync({{#net60OrLater}}cancellationToken{{/net60OrLater}}).ConfigureAwait(false);
651+
apiResponseLocalVar = new{{^net60OrLater}} {{operationId}}ApiResponse{{/net60OrLater}}(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "{{{path}}}", requestedAtLocalVar, _jsonSerializerOptions);
652+
653+
break;
654+
}
655+
}
632656

633657
After{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}apiResponseLocalVar {{#allParams}}{{paramName}} {{/allParams}}{{/lambda.joinWithComma}});
634658

@@ -717,6 +741,22 @@ namespace {{packageName}}.{{apiPackage}}
717741
OnCreated(httpRequestMessage, httpResponseMessage);
718742
}
719743

744+
/// <summary>
745+
/// The <see cref="{{operationId}}ApiResponse"/>
746+
/// </summary>
747+
/// <param name="logger"></param>
748+
/// <param name="httpRequestMessage"></param>
749+
/// <param name="httpResponseMessage"></param>
750+
/// <param name="contentStream"></param>
751+
/// <param name="path"></param>
752+
/// <param name="requestedAt"></param>
753+
/// <param name="jsonSerializerOptions"></param>
754+
public {{operationId}}ApiResponse(ILogger<{{operationId}}ApiResponse> logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, System.IO.Stream contentStream, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, contentStream, path, requestedAt, jsonSerializerOptions)
755+
{
756+
Logger = logger;
757+
OnCreated(httpRequestMessage, httpResponseMessage);
758+
}
759+
720760
partial void OnCreated(global::System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage);
721761
{{#responses}}
722762

0 commit comments

Comments
 (0)