From 4494bf1e9a6fc4cb41c7686d262a263c247692d7 Mon Sep 17 00:00:00 2001 From: Yurii Zhoholiev Date: Tue, 12 Nov 2019 22:58:38 +0200 Subject: [PATCH] [csharp-netcore] Propagate raw content to the ApiException error content. (#4381) * [csharp-netcore] Propagate raw content to the ApiException error content. --- .../csharp-netcore/ApiClient.mustache | 4 +- .../csharp-netcore/ApiResponse.mustache | 38 +++++++++++++++++-- .../csharp-netcore/Configuration.mustache | 4 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 4 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 38 +++++++++++++++++-- .../Org.OpenAPITools/Client/Configuration.cs | 4 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 4 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 38 +++++++++++++++++-- .../Org.OpenAPITools/Client/Configuration.cs | 4 +- 9 files changed, 117 insertions(+), 21 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache index e874041b3e7..58ef09e083d 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache @@ -347,7 +347,9 @@ namespace {{packageName}}.Client private ApiResponse toApiResponse({{#supportsAsync}}IRestResponse response{{/supportsAsync}}{{^supportsAsync}}IRestResponse response, CustomJsonCodec des{{/supportsAsync}}) { T result = {{#supportsAsync}}response.Data{{/supportsAsync}}{{^supportsAsync}}(T)des.Deserialize(response, typeof(T)){{/supportsAsync}}; - var transformed = new ApiResponse(response.StatusCode, new Multimap({{#caseInsensitiveResponseHeaders}}StringComparer.OrdinalIgnoreCase{{/caseInsensitiveResponseHeaders}}), result) + string rawContent = response.Content; + + var transformed = new ApiResponse(response.StatusCode, new Multimap({{#caseInsensitiveResponseHeaders}}StringComparer.OrdinalIgnoreCase{{/caseInsensitiveResponseHeaders}}), result, rawContent) { ErrorText = response.ErrorMessage, Cookies = new List() diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache index eee53bf305d..024a6adb178 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache @@ -42,6 +42,11 @@ namespace {{packageName}}.Client /// Gets or sets any cookies passed along on the response. /// List Cookies { get; set; } + + /// + /// The raw content of this response + /// + string RawContent { get; } } /// @@ -94,6 +99,11 @@ namespace {{packageName}}.Client { get { return Data; } } + + /// + /// The raw content + /// + public string RawContent { get;} #endregion Properties @@ -105,11 +115,23 @@ namespace {{packageName}}.Client /// HTTP status code. /// HTTP headers. /// Data (parsed HTTP body) - public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data, string rawContent) { StatusCode = statusCode; Headers = headers; Data = data; + RawContent = rawContent; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) : this(statusCode, headers, data, null) + { } /// @@ -117,10 +139,18 @@ namespace {{packageName}}.Client /// /// HTTP status code. /// Data (parsed HTTP body) - public ApiResponse(HttpStatusCode statusCode, T data) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, T data, string rawContent) : this(statusCode, null, data, rawContent) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) { - StatusCode = statusCode; - Data = data; } #endregion Constructors diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache index 90d09845bd4..e6c220b8127 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache @@ -45,8 +45,8 @@ namespace {{packageName}}.Client if (status >= 400) { return new ApiException(status, - string.Format("Error calling {0}: {1}", methodName, response.Content), - response.Content); + string.Format("Error calling {0}: {1}", methodName, response.RawContent), + response.RawContent); } {{^netStandard}}if (status == 0) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs index 0071562ed26..5aeb569a1a7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -350,7 +350,9 @@ namespace Org.OpenAPITools.Client private ApiResponse toApiResponse(IRestResponse response) { T result = response.Data; - var transformed = new ApiResponse(response.StatusCode, new Multimap(), result) + string rawContent = response.Content; + + var transformed = new ApiResponse(response.StatusCode, new Multimap(), result, rawContent) { ErrorText = response.ErrorMessage, Cookies = new List() diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs index f56fd53e55b..de1a8f4809e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -51,6 +51,11 @@ namespace Org.OpenAPITools.Client /// Gets or sets any cookies passed along on the response. /// List Cookies { get; set; } + + /// + /// The raw content of this response + /// + string RawContent { get; } } /// @@ -103,6 +108,11 @@ namespace Org.OpenAPITools.Client { get { return Data; } } + + /// + /// The raw content + /// + public string RawContent { get;} #endregion Properties @@ -114,11 +124,23 @@ namespace Org.OpenAPITools.Client /// HTTP status code. /// HTTP headers. /// Data (parsed HTTP body) - public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data, string rawContent) { StatusCode = statusCode; Headers = headers; Data = data; + RawContent = rawContent; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) : this(statusCode, headers, data, null) + { } /// @@ -126,10 +148,18 @@ namespace Org.OpenAPITools.Client /// /// HTTP status code. /// Data (parsed HTTP body) - public ApiResponse(HttpStatusCode statusCode, T data) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, T data, string rawContent) : this(statusCode, null, data, rawContent) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) { - StatusCode = statusCode; - Data = data; } #endregion Constructors diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs index 177363611d6..be86ab28620 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs @@ -52,8 +52,8 @@ namespace Org.OpenAPITools.Client if (status >= 400) { return new ApiException(status, - string.Format("Error calling {0}: {1}", methodName, response.Content), - response.Content); + string.Format("Error calling {0}: {1}", methodName, response.RawContent), + response.RawContent); } return null; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs index f68650fa7bc..1a4735a1cc4 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs @@ -351,7 +351,9 @@ namespace Org.OpenAPITools.Client private ApiResponse toApiResponse(IRestResponse response) { T result = response.Data; - var transformed = new ApiResponse(response.StatusCode, new Multimap(), result) + string rawContent = response.Content; + + var transformed = new ApiResponse(response.StatusCode, new Multimap(), result, rawContent) { ErrorText = response.ErrorMessage, Cookies = new List() diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs index f56fd53e55b..de1a8f4809e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -51,6 +51,11 @@ namespace Org.OpenAPITools.Client /// Gets or sets any cookies passed along on the response. /// List Cookies { get; set; } + + /// + /// The raw content of this response + /// + string RawContent { get; } } /// @@ -103,6 +108,11 @@ namespace Org.OpenAPITools.Client { get { return Data; } } + + /// + /// The raw content + /// + public string RawContent { get;} #endregion Properties @@ -114,11 +124,23 @@ namespace Org.OpenAPITools.Client /// HTTP status code. /// HTTP headers. /// Data (parsed HTTP body) - public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data, string rawContent) { StatusCode = statusCode; Headers = headers; Data = data; + RawContent = rawContent; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) : this(statusCode, headers, data, null) + { } /// @@ -126,10 +148,18 @@ namespace Org.OpenAPITools.Client /// /// HTTP status code. /// Data (parsed HTTP body) - public ApiResponse(HttpStatusCode statusCode, T data) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, T data, string rawContent) : this(statusCode, null, data, rawContent) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) { - StatusCode = statusCode; - Data = data; } #endregion Constructors diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs index 4c0720e504a..11e5a8452fd 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs @@ -52,8 +52,8 @@ namespace Org.OpenAPITools.Client if (status >= 400) { return new ApiException(status, - string.Format("Error calling {0}: {1}", methodName, response.Content), - response.Content); + string.Format("Error calling {0}: {1}", methodName, response.RawContent), + response.RawContent); } if (status == 0) {