From c5463232d32bd69e809dc9f8f2a2c1e23d457cbf Mon Sep 17 00:00:00 2001 From: Yann Milin Date: Thu, 6 Sep 2018 17:52:59 +0200 Subject: [PATCH] [PHP] Fix deserialize ApiException as a Model (#757) * [PHP] Fix deserialize for default responses. Update samples * [PHP] Update sample files * Fix the distination ("-o") of petstore-security-test * Clean up "petstore-security-test" folder * Update petstore-security-test sample files * Update petstore OpenAPI3 sample files --- bin/security/php-petstore.sh | 2 +- .../resources/php/ObjectSerializer.mustache | 4 ++ .../src/main/resources/php/api.mustache | 9 ---- .../php/.openapi-generator/VERSION | 2 +- .../.openapi-generator-ignore | 23 ++++++++++ .../.openapi-generator/VERSION | 1 + .../php/OpenAPIClient-php/docs/Api/FakeApi.md | 2 + .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 2 +- .../OpenAPIClient-php/lib/ApiException.php | 2 +- .../OpenAPIClient-php/lib/Configuration.php | 2 +- .../OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../lib/Model/ModelInterface.php | 2 +- .../lib/Model/ModelReturn.php | 2 +- .../lib/ObjectSerializer.php | 6 ++- .../lib/Api/AnotherFakeApi.php | 9 ---- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 45 ------------------- .../lib/Api/FakeClassnameTags123Api.php | 9 ---- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 45 ------------------- .../OpenAPIClient-php/lib/Api/StoreApi.php | 27 ----------- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 18 -------- .../lib/ObjectSerializer.php | 4 ++ .../lib/Api/AnotherFakeApi.php | 9 ---- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 45 ------------------- .../lib/Api/FakeClassnameTags123Api.php | 9 ---- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 45 ------------------- .../OpenAPIClient-php/lib/Api/StoreApi.php | 27 ----------- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 18 -------- .../lib/ObjectSerializer.php | 4 ++ 28 files changed, 51 insertions(+), 324 deletions(-) create mode 100644 samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator-ignore create mode 100644 samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator/VERSION diff --git a/bin/security/php-petstore.sh b/bin/security/php-petstore.sh index 602a836b08d..0202a399e7b 100755 --- a/bin/security/php-petstore.sh +++ b/bin/security/php-petstore.sh @@ -33,6 +33,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/php -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g php -o samples/client/petstore-security-test/php $@" +ags="generate -t modules/openapi-generator/src/main/resources/php -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g php -o samples/client/petstore-security-test/php/OpenAPIClient-php $@" java $JAVA_OPTS -jar $executable $ags diff --git a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache index a51b202861e..b9993c0410c 100644 --- a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache @@ -220,6 +220,8 @@ class ObjectSerializer if (null === $data) { return null; } elseif (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int] + $data = is_string($data) ? json_decode($data) : $data; + settype($data, 'array'); $inner = substr($class, 4, -1); $deserialized = []; if (strrpos($inner, ",") !== false) { @@ -231,6 +233,7 @@ class ObjectSerializer } return $deserialized; } elseif (strcasecmp(substr($class, -2), '[]') === 0) { + $data = is_string($data) ? json_decode($data) : $data; $subClass = substr($class, 0, -2); $values = []; foreach ($data as $key => $value) { @@ -280,6 +283,7 @@ class ObjectSerializer } return $data; } else { + $data = is_string($data) ? json_decode($data) : $data; // If a discriminator is defined and points to a valid subclass, use it. $discriminator = $class::DISCRIMINATOR; if (!empty($discriminator) && isset($data->{$discriminator}) && is_string($data->{$discriminator})) { diff --git a/modules/openapi-generator/src/main/resources/php/api.mustache b/modules/openapi-generator/src/main/resources/php/api.mustache index 776ebc14207..7ecf4fc9286 100644 --- a/modules/openapi-generator/src/main/resources/php/api.mustache +++ b/modules/openapi-generator/src/main/resources/php/api.mustache @@ -166,9 +166,6 @@ use {{invokerPackage}}\ObjectSerializer; $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('{{dataType}}' !== 'string') { - $content = json_decode($content); - } } return [ @@ -188,9 +185,6 @@ use {{invokerPackage}}\ObjectSerializer; $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -280,9 +274,6 @@ use {{invokerPackage}}\ObjectSerializer; $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore-security-test/php/.openapi-generator/VERSION b/samples/client/petstore-security-test/php/.openapi-generator/VERSION index 14900cee60e..67b096dafc9 100644 --- a/samples/client/petstore-security-test/php/.openapi-generator/VERSION +++ b/samples/client/petstore-security-test/php/.openapi-generator/VERSION @@ -1 +1 @@ -3.2.1-SNAPSHOT \ No newline at end of file +3.2.1-SNAPSHOT diff --git a/samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator-ignore b/samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator/VERSION b/samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator/VERSION new file mode 100644 index 00000000000..4395ff59232 --- /dev/null +++ b/samples/client/petstore-security-test/php/OpenAPIClient-php/.openapi-generator/VERSION @@ -0,0 +1 @@ +3.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore-security-test/php/OpenAPIClient-php/docs/Api/FakeApi.md b/samples/client/petstore-security-test/php/OpenAPIClient-php/docs/Api/FakeApi.md index dae9ffabe9b..afee7db1162 100644 --- a/samples/client/petstore-security-test/php/OpenAPIClient-php/docs/Api/FakeApi.md +++ b/samples/client/petstore-security-test/php/OpenAPIClient-php/docs/Api/FakeApi.md @@ -12,6 +12,8 @@ Method | HTTP request | Description To test code injection *_/ ' \" =end -- \\r\\n \\n \\r +To test code injection *_/ ' \" =end -- \\r\\n \\n \\r + ### Example ```php $value) { @@ -290,6 +293,7 @@ class ObjectSerializer } return $data; } else { + $data = is_string($data) ? json_decode($data) : $data; // If a discriminator is defined and points to a valid subclass, use it. $discriminator = $class::DISCRIMINATOR; if (!empty($discriminator) && isset($data->{$discriminator}) && is_string($data->{$discriminator})) { diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index 9bbd137c862..644aaca9230 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -154,9 +154,6 @@ class AnotherFakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Client' !== 'string') { - $content = json_decode($content); - } } return [ @@ -172,9 +169,6 @@ class AnotherFakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -242,9 +236,6 @@ class AnotherFakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 970b4a1588d..c8691f7e932 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -150,9 +150,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('bool' !== 'string') { - $content = json_decode($content); - } } return [ @@ -168,9 +165,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -238,9 +232,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -416,9 +407,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\OuterComposite' !== 'string') { - $content = json_decode($content); - } } return [ @@ -434,9 +422,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -504,9 +489,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -682,9 +664,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('float' !== 'string') { - $content = json_decode($content); - } } return [ @@ -700,9 +679,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -770,9 +746,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -948,9 +921,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('string' !== 'string') { - $content = json_decode($content); - } } return [ @@ -966,9 +936,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1036,9 +1003,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1663,9 +1627,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Client' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1681,9 +1642,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1751,9 +1709,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index 2abea2824ae..2870a4c9050 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -154,9 +154,6 @@ class FakeClassnameTags123Api $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Client' !== 'string') { - $content = json_decode($content); - } } return [ @@ -172,9 +169,6 @@ class FakeClassnameTags123Api $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -242,9 +236,6 @@ class FakeClassnameTags123Api $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index ba76970f694..40d4cb8e1b7 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -614,9 +614,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Pet[]' !== 'string') { - $content = json_decode($content); - } } return [ @@ -632,9 +629,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -702,9 +696,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -898,9 +889,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Pet[]' !== 'string') { - $content = json_decode($content); - } } return [ @@ -916,9 +904,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -986,9 +971,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1182,9 +1164,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Pet' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1200,9 +1179,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1270,9 +1246,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1941,9 +1914,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\ApiResponse' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1959,9 +1929,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -2033,9 +2000,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -2245,9 +2209,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\ApiResponse' !== 'string') { - $content = json_decode($content); - } } return [ @@ -2263,9 +2224,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -2337,9 +2295,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 807983a4a5a..f12f7270d96 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -376,9 +376,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('map[string,int]' !== 'string') { - $content = json_decode($content); - } } return [ @@ -394,9 +391,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -462,9 +456,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -645,9 +636,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Order' !== 'string') { - $content = json_decode($content); - } } return [ @@ -663,9 +651,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -733,9 +718,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -933,9 +915,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Order' !== 'string') { - $content = json_decode($content); - } } return [ @@ -951,9 +930,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1021,9 +997,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index 48f023c3d6c..492c68ff573 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -1035,9 +1035,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\User' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1053,9 +1050,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1123,9 +1117,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1318,9 +1309,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('string' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1336,9 +1324,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1408,9 +1393,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 52cd983335e..3592527a968 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -230,6 +230,8 @@ class ObjectSerializer if (null === $data) { return null; } elseif (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int] + $data = is_string($data) ? json_decode($data) : $data; + settype($data, 'array'); $inner = substr($class, 4, -1); $deserialized = []; if (strrpos($inner, ",") !== false) { @@ -241,6 +243,7 @@ class ObjectSerializer } return $deserialized; } elseif (strcasecmp(substr($class, -2), '[]') === 0) { + $data = is_string($data) ? json_decode($data) : $data; $subClass = substr($class, 0, -2); $values = []; foreach ($data as $key => $value) { @@ -290,6 +293,7 @@ class ObjectSerializer } return $data; } else { + $data = is_string($data) ? json_decode($data) : $data; // If a discriminator is defined and points to a valid subclass, use it. $discriminator = $class::DISCRIMINATOR; if (!empty($discriminator) && isset($data->{$discriminator}) && is_string($data->{$discriminator})) { diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index 9bbd137c862..644aaca9230 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -154,9 +154,6 @@ class AnotherFakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Client' !== 'string') { - $content = json_decode($content); - } } return [ @@ -172,9 +169,6 @@ class AnotherFakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -242,9 +236,6 @@ class AnotherFakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index d58d8ebedcd..8e18423c90a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -150,9 +150,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('bool' !== 'string') { - $content = json_decode($content); - } } return [ @@ -168,9 +165,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -238,9 +232,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -416,9 +407,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\OuterComposite' !== 'string') { - $content = json_decode($content); - } } return [ @@ -434,9 +422,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -504,9 +489,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -682,9 +664,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('float' !== 'string') { - $content = json_decode($content); - } } return [ @@ -700,9 +679,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -770,9 +746,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -948,9 +921,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('string' !== 'string') { - $content = json_decode($content); - } } return [ @@ -966,9 +936,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1036,9 +1003,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1663,9 +1627,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Client' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1681,9 +1642,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1751,9 +1709,6 @@ class FakeApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index 2abea2824ae..2870a4c9050 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -154,9 +154,6 @@ class FakeClassnameTags123Api $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Client' !== 'string') { - $content = json_decode($content); - } } return [ @@ -172,9 +169,6 @@ class FakeClassnameTags123Api $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -242,9 +236,6 @@ class FakeClassnameTags123Api $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index ba76970f694..40d4cb8e1b7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -614,9 +614,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Pet[]' !== 'string') { - $content = json_decode($content); - } } return [ @@ -632,9 +629,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -702,9 +696,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -898,9 +889,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Pet[]' !== 'string') { - $content = json_decode($content); - } } return [ @@ -916,9 +904,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -986,9 +971,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1182,9 +1164,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Pet' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1200,9 +1179,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1270,9 +1246,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1941,9 +1914,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\ApiResponse' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1959,9 +1929,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -2033,9 +2000,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -2245,9 +2209,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\ApiResponse' !== 'string') { - $content = json_decode($content); - } } return [ @@ -2263,9 +2224,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -2337,9 +2295,6 @@ class PetApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index b0e2238a7d2..44c9421b2cb 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -376,9 +376,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('map[string,int]' !== 'string') { - $content = json_decode($content); - } } return [ @@ -394,9 +391,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -462,9 +456,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -645,9 +636,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Order' !== 'string') { - $content = json_decode($content); - } } return [ @@ -663,9 +651,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -733,9 +718,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -933,9 +915,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\Order' !== 'string') { - $content = json_decode($content); - } } return [ @@ -951,9 +930,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1021,9 +997,6 @@ class StoreApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index bd4a5d67f70..5f3227b2878 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -1035,9 +1035,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('\OpenAPI\Client\Model\User' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1053,9 +1050,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1123,9 +1117,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1318,9 +1309,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ('string' !== 'string') { - $content = json_decode($content); - } } return [ @@ -1336,9 +1324,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ @@ -1408,9 +1393,6 @@ class UserApi $content = $responseBody; //stream goes to serializer } else { $content = $responseBody->getContents(); - if ($returnType !== 'string') { - $content = json_decode($content); - } } return [ diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 52cd983335e..3592527a968 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -230,6 +230,8 @@ class ObjectSerializer if (null === $data) { return null; } elseif (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int] + $data = is_string($data) ? json_decode($data) : $data; + settype($data, 'array'); $inner = substr($class, 4, -1); $deserialized = []; if (strrpos($inner, ",") !== false) { @@ -241,6 +243,7 @@ class ObjectSerializer } return $deserialized; } elseif (strcasecmp(substr($class, -2), '[]') === 0) { + $data = is_string($data) ? json_decode($data) : $data; $subClass = substr($class, 0, -2); $values = []; foreach ($data as $key => $value) { @@ -290,6 +293,7 @@ class ObjectSerializer } return $data; } else { + $data = is_string($data) ? json_decode($data) : $data; // If a discriminator is defined and points to a valid subclass, use it. $discriminator = $class::DISCRIMINATOR; if (!empty($discriminator) && isset($data->{$discriminator}) && is_string($data->{$discriminator})) {