forked from loafle/openapi-generator-original
[Php] Exclude query params when they're not required (#12120)
* exclude query params when they are not required * fix check on empty * update samples * fix * add tests * update test * Fix style I guess PHPCodeSniffer would find PSR12 violated but we use CS-Fixer instead. Anyway, conditions should contain spaces between logical operators for readability. * Apply CS-Fixer changes to templates * Refresh samples * Add required param to docblock Co-authored-by: Yuriy Belenko <yura-bely@mail.ru>
This commit is contained in:
parent
6f1fa4592b
commit
6b3abd9421
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
namespace {{invokerPackage}};
|
namespace {{invokerPackage}};
|
||||||
|
|
||||||
use {{modelPackage}}\ModelInterface;
|
|
||||||
use GuzzleHttp\Psr7\Utils;
|
use GuzzleHttp\Psr7\Utils;
|
||||||
|
use {{modelPackage}}\ModelInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ObjectSerializer Class Doc Comment
|
* ObjectSerializer Class Doc Comment
|
||||||
@ -157,6 +157,7 @@ class ObjectSerializer
|
|||||||
* @param string $openApiType OpenAPIType eg. array or object
|
* @param string $openApiType OpenAPIType eg. array or object
|
||||||
* @param string $style Parameter serialization style
|
* @param string $style Parameter serialization style
|
||||||
* @param bool $explode Parameter explode option
|
* @param bool $explode Parameter explode option
|
||||||
|
* @param bool $required Whether query param is required or not
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@ -165,10 +166,19 @@ class ObjectSerializer
|
|||||||
string $paramName,
|
string $paramName,
|
||||||
string $openApiType = 'string',
|
string $openApiType = 'string',
|
||||||
string $style = 'form',
|
string $style = 'form',
|
||||||
bool $explode = true
|
bool $explode = true,
|
||||||
|
bool $required = true
|
||||||
): array {
|
): array {
|
||||||
// return empty string
|
if (
|
||||||
if (empty($value)) return ["{$paramName}" => ''];
|
empty($value)
|
||||||
|
&& ($value !== false || $openApiType !== 'boolean') // if $value === false and $openApiType ==='boolean' it isn't empty
|
||||||
|
) {
|
||||||
|
if ($required) {
|
||||||
|
return ["{$paramName}" => ''];
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$query = [];
|
$query = [];
|
||||||
$value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value;
|
$value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value;
|
||||||
@ -350,7 +360,7 @@ class ObjectSerializer
|
|||||||
if ($class === 'object') {
|
if ($class === 'object') {
|
||||||
settype($data, 'array');
|
settype($data, 'array');
|
||||||
return $data;
|
return $data;
|
||||||
} else if ($class === 'mixed') {
|
} elseif ($class === 'mixed') {
|
||||||
settype($data, gettype($data));
|
settype($data, gettype($data));
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ namespace {{apiPackage}};
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
@ -511,7 +511,8 @@ use {{invokerPackage}}\ObjectSerializer;
|
|||||||
'{{baseName}}', // param base name
|
'{{baseName}}', // param base name
|
||||||
'{{#schema}}{{openApiType}}{{/schema}}', // openApiType
|
'{{#schema}}{{openApiType}}{{/schema}}', // openApiType
|
||||||
'{{style}}', // style
|
'{{style}}', // style
|
||||||
{{#isExplode}}true{{/isExplode}}{{^isExplode}}false{{/isExplode}} // explode
|
{{#isExplode}}true{{/isExplode}}{{^isExplode}}false{{/isExplode}}, // explode
|
||||||
|
{{required}} // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
{{/queryParams}}
|
{{/queryParams}}
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
@ -549,7 +549,8 @@ class FakeApi
|
|||||||
'query_1', // param base name
|
'query_1', // param base name
|
||||||
'string', // openApiType
|
'string', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
// header params
|
// header params
|
||||||
@ -2546,7 +2547,8 @@ class FakeApi
|
|||||||
'query', // param base name
|
'query', // param base name
|
||||||
'string', // openApiType
|
'string', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
|
|
||||||
@ -3506,7 +3508,8 @@ class FakeApi
|
|||||||
'enum_query_string_array', // param base name
|
'enum_query_string_array', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3514,7 +3517,8 @@ class FakeApi
|
|||||||
'enum_query_string', // param base name
|
'enum_query_string', // param base name
|
||||||
'string', // openApiType
|
'string', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3522,7 +3526,8 @@ class FakeApi
|
|||||||
'enum_query_integer', // param base name
|
'enum_query_integer', // param base name
|
||||||
'integer', // openApiType
|
'integer', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3530,7 +3535,8 @@ class FakeApi
|
|||||||
'enum_query_double', // param base name
|
'enum_query_double', // param base name
|
||||||
'number', // openApiType
|
'number', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3538,7 +3544,8 @@ class FakeApi
|
|||||||
'enum_query_model_array', // param base name
|
'enum_query_model_array', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
// header params
|
// header params
|
||||||
@ -3838,7 +3845,8 @@ class FakeApi
|
|||||||
'required_string_group', // param base name
|
'required_string_group', // param base name
|
||||||
'integer', // openApiType
|
'integer', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3846,7 +3854,8 @@ class FakeApi
|
|||||||
'required_int64_group', // param base name
|
'required_int64_group', // param base name
|
||||||
'integer', // openApiType
|
'integer', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3854,7 +3863,8 @@ class FakeApi
|
|||||||
'string_group', // param base name
|
'string_group', // param base name
|
||||||
'integer', // openApiType
|
'integer', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -3862,7 +3872,8 @@ class FakeApi
|
|||||||
'int64_group', // param base name
|
'int64_group', // param base name
|
||||||
'integer', // openApiType
|
'integer', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
// header params
|
// header params
|
||||||
@ -4613,7 +4624,8 @@ class FakeApi
|
|||||||
'pipe', // param base name
|
'pipe', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'pipeDelimited', // style
|
'pipeDelimited', // style
|
||||||
false // explode
|
false, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -4621,7 +4633,8 @@ class FakeApi
|
|||||||
'ioutil', // param base name
|
'ioutil', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
false // explode
|
false, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -4629,7 +4642,8 @@ class FakeApi
|
|||||||
'http', // param base name
|
'http', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'spaceDelimited', // style
|
'spaceDelimited', // style
|
||||||
false // explode
|
false, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -4637,7 +4651,8 @@ class FakeApi
|
|||||||
'url', // param base name
|
'url', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
false // explode
|
false, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -4645,7 +4660,8 @@ class FakeApi
|
|||||||
'context', // param base name
|
'context', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -4653,7 +4669,8 @@ class FakeApi
|
|||||||
'language', // param base name
|
'language', // param base name
|
||||||
'object', // openApiType
|
'object', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
false // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -4661,7 +4678,8 @@ class FakeApi
|
|||||||
'allowEmpty', // param base name
|
'allowEmpty', // param base name
|
||||||
'string', // openApiType
|
'string', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
@ -825,7 +825,8 @@ class PetApi
|
|||||||
'status', // param base name
|
'status', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
false // explode
|
false, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
|
|
||||||
@ -1115,7 +1116,8 @@ class PetApi
|
|||||||
'tags', // param base name
|
'tags', // param base name
|
||||||
'array', // openApiType
|
'array', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
false // explode
|
false, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
|
@ -29,8 +29,8 @@ namespace OpenAPI\Client\Api;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\ClientInterface;
|
use GuzzleHttp\ClientInterface;
|
||||||
use GuzzleHttp\Exception\RequestException;
|
|
||||||
use GuzzleHttp\Exception\ConnectException;
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use GuzzleHttp\Psr7\MultipartStream;
|
use GuzzleHttp\Psr7\MultipartStream;
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use GuzzleHttp\RequestOptions;
|
use GuzzleHttp\RequestOptions;
|
||||||
@ -1521,7 +1521,8 @@ class UserApi
|
|||||||
'username', // param base name
|
'username', // param base name
|
||||||
'string', // openApiType
|
'string', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
// query params
|
// query params
|
||||||
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
||||||
@ -1529,7 +1530,8 @@ class UserApi
|
|||||||
'password', // param base name
|
'password', // param base name
|
||||||
'string', // openApiType
|
'string', // openApiType
|
||||||
'form', // style
|
'form', // style
|
||||||
true // explode
|
true, // explode
|
||||||
|
true // required
|
||||||
) ?? []);
|
) ?? []);
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
|
|
||||||
namespace OpenAPI\Client;
|
namespace OpenAPI\Client;
|
||||||
|
|
||||||
use OpenAPI\Client\Model\ModelInterface;
|
|
||||||
use GuzzleHttp\Psr7\Utils;
|
use GuzzleHttp\Psr7\Utils;
|
||||||
|
use OpenAPI\Client\Model\ModelInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ObjectSerializer Class Doc Comment
|
* ObjectSerializer Class Doc Comment
|
||||||
@ -166,6 +166,7 @@ class ObjectSerializer
|
|||||||
* @param string $openApiType OpenAPIType eg. array or object
|
* @param string $openApiType OpenAPIType eg. array or object
|
||||||
* @param string $style Parameter serialization style
|
* @param string $style Parameter serialization style
|
||||||
* @param bool $explode Parameter explode option
|
* @param bool $explode Parameter explode option
|
||||||
|
* @param bool $required Whether query param is required or not
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@ -174,10 +175,19 @@ class ObjectSerializer
|
|||||||
string $paramName,
|
string $paramName,
|
||||||
string $openApiType = 'string',
|
string $openApiType = 'string',
|
||||||
string $style = 'form',
|
string $style = 'form',
|
||||||
bool $explode = true
|
bool $explode = true,
|
||||||
|
bool $required = true
|
||||||
): array {
|
): array {
|
||||||
// return empty string
|
if (
|
||||||
if (empty($value)) return ["{$paramName}" => ''];
|
empty($value)
|
||||||
|
&& ($value !== false || $openApiType !== 'boolean') // if $value === false and $openApiType ==='boolean' it isn't empty
|
||||||
|
) {
|
||||||
|
if ($required) {
|
||||||
|
return ["{$paramName}" => ''];
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$query = [];
|
$query = [];
|
||||||
$value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value;
|
$value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value;
|
||||||
@ -359,7 +369,7 @@ class ObjectSerializer
|
|||||||
if ($class === 'object') {
|
if ($class === 'object') {
|
||||||
settype($data, 'array');
|
settype($data, 'array');
|
||||||
return $data;
|
return $data;
|
||||||
} else if ($class === 'mixed') {
|
} elseif ($class === 'mixed') {
|
||||||
settype($data, gettype($data));
|
settype($data, gettype($data));
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -141,9 +141,10 @@ class ObjectSerializerTest extends TestCase
|
|||||||
string $openApiType,
|
string $openApiType,
|
||||||
string $style,
|
string $style,
|
||||||
bool $explode,
|
bool $explode,
|
||||||
|
bool $required,
|
||||||
$expected
|
$expected
|
||||||
): void {
|
): void {
|
||||||
$value = ObjectSerializer::toQueryValue($data, $paramName, $openApiType, $style, $explode);
|
$value = ObjectSerializer::toQueryValue($data, $paramName, $openApiType, $style, $explode, $required);
|
||||||
$query = ObjectSerializer::buildQuery($value);
|
$query = ObjectSerializer::buildQuery($value);
|
||||||
$this->assertEquals($expected, $query);
|
$this->assertEquals($expected, $query);
|
||||||
}
|
}
|
||||||
@ -155,124 +156,137 @@ class ObjectSerializerTest extends TestCase
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
// style form
|
// style form
|
||||||
// color=
|
// skipValidation
|
||||||
'form empty, explode on' => [
|
'form boolean, explode on, required false' => [
|
||||||
'', 'color', 'string', 'form', true, 'color=',
|
false, 'skipValidation', 'boolean', 'form', true, false, 'skipValidation=0',
|
||||||
|
],
|
||||||
|
'form empty boolean, explode on, required false' => [
|
||||||
|
null, 'skipValidation', 'boolean', 'form', true, false, '',
|
||||||
|
],
|
||||||
|
'form empty boolean, explode on, required true' => [
|
||||||
|
null, 'skipValidation', 'boolean', 'form', true, true, 'skipValidation=',
|
||||||
],
|
],
|
||||||
// color=
|
// color=
|
||||||
'form empty, explode off' => [
|
'form empty, explode on, required true' => [
|
||||||
'', 'color', 'string', 'form', false, 'color=',
|
'', 'color', 'string', 'form', true, true, 'color=',
|
||||||
|
],
|
||||||
|
'form empty, explode on, required false' => [
|
||||||
|
'', 'color', 'string', 'form', true, false, '',
|
||||||
|
],
|
||||||
|
// color=
|
||||||
|
'form empty, explode off, required true' => [
|
||||||
|
'', 'color', 'string', 'form', false, true, 'color=',
|
||||||
],
|
],
|
||||||
// color=blue
|
// color=blue
|
||||||
'form string, explode on' => [
|
'form string, explode on, required true' => [
|
||||||
'blue', 'color', 'string', 'form', true, 'color=blue',
|
'blue', 'color', 'string', 'form', true, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue
|
// color=blue
|
||||||
'form string, explode off' => [
|
'form string, explode off, required true' => [
|
||||||
'blue', 'color', 'string', 'form', false, 'color=blue',
|
'blue', 'color', 'string', 'form', false, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue&color=black&color=brown
|
// color=blue&color=black&color=brown
|
||||||
'form array, explode on' => [
|
'form array, explode on, required true' => [
|
||||||
$array, 'color', 'array', 'form', true, 'color=blue&color=black&color=brown',
|
$array, 'color', 'array', 'form', true, true, 'color=blue&color=black&color=brown',
|
||||||
],
|
],
|
||||||
// color=blue&color=black&color=brown
|
// color=blue&color=black&color=brown
|
||||||
'form nested array, explode on' => [
|
'form nested array, explode on, required true' => [
|
||||||
['foobar' => $array], 'color', 'array', 'form', true, 'color=blue&color=black&color=brown',
|
['foobar' => $array], 'color', 'array', 'form', true, true, 'color=blue&color=black&color=brown',
|
||||||
],
|
],
|
||||||
// color=blue,black,brown
|
// color=blue,black,brown
|
||||||
'form array, explode off' => [
|
'form array, explode off, required true' => [
|
||||||
$array, 'color', 'array', 'form', false, 'color=blue%2Cblack%2Cbrown',
|
$array, 'color', 'array', 'form', false, true, 'color=blue%2Cblack%2Cbrown',
|
||||||
],
|
],
|
||||||
// color=blue,black,brown
|
// color=blue,black,brown
|
||||||
'form nested array, explode off' => [
|
'form nested array, explode off, required true' => [
|
||||||
['foobar' => $array], 'color', 'array', 'form', false, 'color=blue%2Cblack%2Cbrown',
|
['foobar' => $array], 'color', 'array', 'form', false, true, 'color=blue%2Cblack%2Cbrown',
|
||||||
],
|
],
|
||||||
// R=100&G=200&B=150
|
// R=100&G=200&B=150
|
||||||
'form object, explode on' => [
|
'form object, explode on, required true' => [
|
||||||
$object, 'color', 'object', 'form', true, 'R=100&G=200&B=150',
|
$object, 'color', 'object', 'form', true, true, 'R=100&G=200&B=150',
|
||||||
],
|
],
|
||||||
// color=R,100,G,200,B,150
|
// color=R,100,G,200,B,150
|
||||||
'form object, explode off' => [
|
'form object, explode off, required true' => [
|
||||||
$object, 'color', 'object', 'form', false, 'color=R%2C100%2CG%2C200%2CB%2C150',
|
$object, 'color', 'object', 'form', false, true, 'color=R%2C100%2CG%2C200%2CB%2C150',
|
||||||
],
|
],
|
||||||
|
|
||||||
// SPACE DELIMITED
|
// SPACE DELIMITED
|
||||||
// color=blue
|
// color=blue
|
||||||
'spaceDelimited primitive, explode off' => [
|
'spaceDelimited primitive, explode off, required true' => [
|
||||||
'blue', 'color', 'string', 'spaceDelimited', false, 'color=blue',
|
'blue', 'color', 'string', 'spaceDelimited', false, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue
|
// color=blue
|
||||||
'spaceDelimited primitive, explode on' => [
|
'spaceDelimited primitive, explode on, required true' => [
|
||||||
'blue', 'color', 'string', 'spaceDelimited', true, 'color=blue',
|
'blue', 'color', 'string', 'spaceDelimited', true, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue%20black%20brown
|
// color=blue%20black%20brown
|
||||||
'spaceDelimited array, explode off' => [
|
'spaceDelimited array, explode off, required true' => [
|
||||||
$array, 'color', 'array', 'spaceDelimited', false, 'color=blue%20black%20brown',
|
$array, 'color', 'array', 'spaceDelimited', false, true, 'color=blue%20black%20brown',
|
||||||
],
|
],
|
||||||
// color=blue&color=black&color=brown
|
// color=blue&color=black&color=brown
|
||||||
'spaceDelimited array, explode on' => [
|
'spaceDelimited array, explode on, required true' => [
|
||||||
$array, 'color', 'array', 'spaceDelimited', true, 'color=blue&color=black&color=brown',
|
$array, 'color', 'array', 'spaceDelimited', true, true, 'color=blue&color=black&color=brown',
|
||||||
],
|
],
|
||||||
// color=R%20100%20G%20200%20B%20150
|
// color=R%20100%20G%20200%20B%20150
|
||||||
// swagger editor gives color=R,100,G,200,B,150
|
// swagger editor gives color=R,100,G,200,B,150
|
||||||
'spaceDelimited object, explode off' => [
|
'spaceDelimited object, explode off, required true' => [
|
||||||
$object, 'color', 'object', 'spaceDelimited', false, 'color=R%20100%20G%20200%20B%20150',
|
$object, 'color', 'object', 'spaceDelimited', false, true, 'color=R%20100%20G%20200%20B%20150',
|
||||||
],
|
],
|
||||||
// R=100&G=200&B=150
|
// R=100&G=200&B=150
|
||||||
'spaceDelimited object, explode on' => [
|
'spaceDelimited object, explode on, required true' => [
|
||||||
$object, 'color', 'object', 'spaceDelimited', true, 'R=100&G=200&B=150',
|
$object, 'color', 'object', 'spaceDelimited', true, true, 'R=100&G=200&B=150',
|
||||||
],
|
],
|
||||||
|
|
||||||
// PIPE DELIMITED
|
// PIPE DELIMITED
|
||||||
// color=blue
|
// color=blue
|
||||||
'pipeDelimited primitive, explode off' => [
|
'pipeDelimited primitive, explode off, required true' => [
|
||||||
'blue', 'color', 'string', 'pipeDelimited', false, 'color=blue',
|
'blue', 'color', 'string', 'pipeDelimited', false, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue
|
// color=blue
|
||||||
'pipeDelimited primitive, explode on' => [
|
'pipeDelimited primitive, explode on, required true' => [
|
||||||
'blue', 'color', 'string', 'pipeDelimited', true, 'color=blue',
|
'blue', 'color', 'string', 'pipeDelimited', true, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue|black|brown
|
// color=blue|black|brown
|
||||||
'pipeDelimited array, explode off' => [
|
'pipeDelimited array, explode off, required true' => [
|
||||||
$array, 'color', 'array', 'pipeDelimited', false, 'color=blue%7Cblack%7Cbrown',
|
$array, 'color', 'array', 'pipeDelimited', false, true, 'color=blue%7Cblack%7Cbrown',
|
||||||
],
|
],
|
||||||
// color=blue&color=black&color=brown
|
// color=blue&color=black&color=brown
|
||||||
'pipeDelimited array, explode on' => [
|
'pipeDelimited array, explode on, required true' => [
|
||||||
$array, 'color', 'array', 'pipeDelimited', true, 'color=blue&color=black&color=brown',
|
$array, 'color', 'array', 'pipeDelimited', true, true, 'color=blue&color=black&color=brown',
|
||||||
],
|
],
|
||||||
// color=R|100|G|200|B|150
|
// color=R|100|G|200|B|150
|
||||||
// swagger editor gives color=R,100,G,200,B,150
|
// swagger editor gives color=R,100,G,200,B,150
|
||||||
'pipeDelimited object, explode off' => [
|
'pipeDelimited object, explode off, required true' => [
|
||||||
$object, 'color', 'object', 'pipeDelimited', false, 'color=R%7C100%7CG%7C200%7CB%7C150',
|
$object, 'color', 'object', 'pipeDelimited', false, true, 'color=R%7C100%7CG%7C200%7CB%7C150',
|
||||||
],
|
],
|
||||||
// R=100&G=200&B=150
|
// R=100&G=200&B=150
|
||||||
'pipeDelimited object, explode on' => [
|
'pipeDelimited object, explode on, required true' => [
|
||||||
$object, 'color', 'object', 'pipeDelimited', true, 'R=100&G=200&B=150',
|
$object, 'color', 'object', 'pipeDelimited', true, true, 'R=100&G=200&B=150',
|
||||||
],
|
],
|
||||||
|
|
||||||
// DEEP OBJECT
|
// DEEP OBJECT
|
||||||
// color=blue
|
// color=blue
|
||||||
'deepObject primitive, explode off' => [
|
'deepObject primitive, explode off, required true' => [
|
||||||
'blue', 'color', 'string', 'deepObject', false, 'color=blue',
|
'blue', 'color', 'string', 'deepObject', false, true, 'color=blue',
|
||||||
],
|
],
|
||||||
'deepObject primitive, explode on' => [
|
'deepObject primitive, explode on, required true' => [
|
||||||
'blue', 'color', 'string', 'deepObject', true, 'color=blue',
|
'blue', 'color', 'string', 'deepObject', true, true, 'color=blue',
|
||||||
],
|
],
|
||||||
// color=blue,black,brown
|
// color=blue,black,brown
|
||||||
'deepObject array, explode off' => [
|
'deepObject array, explode off, required true' => [
|
||||||
$array, 'color', 'array', 'deepObject', false, 'color=blue%2Cblack%2Cbrown',
|
$array, 'color', 'array', 'deepObject', false, true, 'color=blue%2Cblack%2Cbrown',
|
||||||
],
|
],
|
||||||
// color=blue&color=black&color=brown
|
// color=blue&color=black&color=brown
|
||||||
'deepObject array, explode on' => [
|
'deepObject array, explode on, required true' => [
|
||||||
$array, 'color', 'array', 'deepObject', true, 'color=blue&color=black&color=brown',
|
$array, 'color', 'array', 'deepObject', true, true, 'color=blue&color=black&color=brown',
|
||||||
],
|
],
|
||||||
// color[R]=100&color[G]=200&color[B]=150
|
// color[R]=100&color[G]=200&color[B]=150
|
||||||
'deepObject object, explode off' => [
|
'deepObject object, explode off, required true' => [
|
||||||
$object, 'color', 'object', 'deepObject', false, 'color%5BR%5D=100&color%5BG%5D=200&color%5BB%5D=150',
|
$object, 'color', 'object', 'deepObject', false, true, 'color%5BR%5D=100&color%5BG%5D=200&color%5BB%5D=150',
|
||||||
],
|
],
|
||||||
// color[R]=100&color[G]=200&color[B]=150
|
// color[R]=100&color[G]=200&color[B]=150
|
||||||
'deepObject object, explode on' => [
|
'deepObject object, explode on, required true' => [
|
||||||
$object, 'color', 'object', 'deepObject', true, 'color%5BR%5D=100&color%5BG%5D=200&color%5BB%5D=150',
|
$object, 'color', 'object', 'deepObject', true, true, 'color%5BR%5D=100&color%5BG%5D=200&color%5BB%5D=150',
|
||||||
],
|
],
|
||||||
// filter[or][0][name]=John&filter[or][1][email]=john@doe.com
|
// filter[or][0][name]=John&filter[or][1][email]=john@doe.com
|
||||||
'example from @nadar' => [
|
'example from @nadar' => [
|
||||||
@ -287,6 +301,7 @@ class ObjectSerializerTest extends TestCase
|
|||||||
'object',
|
'object',
|
||||||
'deepObject',
|
'deepObject',
|
||||||
true,
|
true,
|
||||||
|
true,
|
||||||
'filter%5Bor%5D%5B0%5D%5Bname%5D=John&filter%5Bor%5D%5B1%5D%5Bemail%5D=john%40doe.com'
|
'filter%5Bor%5D%5B0%5D%5Bname%5D=John&filter%5Bor%5D%5B1%5D%5Bemail%5D=john%40doe.com'
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user