diff --git a/bin/utils/test_file_list.yaml b/bin/utils/test_file_list.yaml index 3d7cf02ace5..d2d65e328f9 100644 --- a/bin/utils/test_file_list.yaml +++ b/bin/utils/test_file_list.yaml @@ -1,6 +1,6 @@ --- # csharp-netcore test files and image for upload - filename: "samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs" - sha256: b74ef9eefa4b41fd3233e083fe2355babf25a77f9073d28e1aa81ae2e0a5f1d0 + sha256: aceebba316148a2a803a15ef4e13bbd0b0a1b8d15006cd88adb9b39a620ee451 - filename: "samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/linux-logo.png" sha256: 0a67c32728197e942b13bdda064b73793f12f5c795f1e5cf35a3adf69c973230 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 c1d025d7f03..1b5571eff72 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache @@ -472,6 +472,19 @@ namespace {{packageName}}.Client response = client.Execute(req); } + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T)Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] { response.Content }); + response.Data = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + InterceptResponse(req, response); var result = ToApiResponse(response); @@ -583,6 +596,10 @@ namespace {{packageName}}.Client method.Invoke(instance, new object[] { response.Content }); response.Data = instance; } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } InterceptResponse(req, response); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs index 53e4ce7fd45..d70c53adbdb 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -477,6 +477,19 @@ namespace Org.OpenAPITools.Client response = client.Execute(req); } + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T)Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] { response.Content }); + response.Data = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + InterceptResponse(req, response); var result = ToApiResponse(response); @@ -587,6 +600,10 @@ namespace Org.OpenAPITools.Client method.Invoke(instance, new object[] { response.Content }); response.Data = instance; } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } InterceptResponse(req, response); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs index 5c4b6465dbc..a78ae625eee 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs @@ -477,6 +477,19 @@ namespace Org.OpenAPITools.Client response = client.Execute(req); } + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T)Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] { response.Content }); + response.Data = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + InterceptResponse(req, response); var result = ToApiResponse(response); @@ -587,6 +600,10 @@ namespace Org.OpenAPITools.Client method.Invoke(instance, new object[] { response.Content }); response.Data = instance; } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } InterceptResponse(req, response); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs index b3376d6045e..1ca767977f2 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs @@ -199,6 +199,19 @@ namespace Org.OpenAPITools.Test Assert.Equal("sample category name2", response.Category.Name); } + /* a simple test for binary response. no longer in use. + [Fact] + public void TestGetByIdBinaryResponse() + { + PetApi petApi = new PetApi(c1); + Stream response = petApi.GetPetByIdBinaryResponse(petId); + Assert.IsType(response); + StreamReader reader = new StreamReader(response); + // the following will fail for sure + //Assert.Equal("someting", reader.ReadToEnd()); + } + */ + /// /// Test GetPetByIdWithHttpInfoAsync /// 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 520896de7ea..020a2df2dc3 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 @@ -476,6 +476,19 @@ namespace Org.OpenAPITools.Client response = client.Execute(req); } + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T)Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] { response.Content }); + response.Data = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + InterceptResponse(req, response); var result = ToApiResponse(response); @@ -586,6 +599,10 @@ namespace Org.OpenAPITools.Client method.Invoke(instance, new object[] { response.Content }); response.Data = instance; } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } InterceptResponse(req, response); 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 53e4ce7fd45..d70c53adbdb 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 @@ -477,6 +477,19 @@ namespace Org.OpenAPITools.Client response = client.Execute(req); } + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T)Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] { response.Content }); + response.Data = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + InterceptResponse(req, response); var result = ToApiResponse(response); @@ -587,6 +600,10 @@ namespace Org.OpenAPITools.Client method.Invoke(instance, new object[] { response.Content }); response.Data = instance; } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } InterceptResponse(req, response);